Я пытаюсь индексировать двумерный массив для определенных значений, используя numpy .where (), но если я не индексирую в первом индексе без среза :
, это всегда увеличивает размерность. Я не могу найти объяснение этому в документации.
Например, скажем, у меня есть массив a
:
a = np.arange(20)
a = np.reshape(a,(4,5))
print("a = ",a)
print("a shape = ", a.shape)
Вывод:
a = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
a shape = (4, 5)
Если у меня есть два индексных массива, один в направлении 'x' и один в направлении 'y':
x = np.arange(5)
y = np.arange(4)
xindx = np.where((x>=2)&(x<=4))
yindx = np.where((y>=1)&(y<=2))
, а затем индексируйте a
, используя индекс 'y', так что есть нет проблем:
print(a[yindx])
print(a[yindx].shape)
Вывод:
[[ 5 6 7 8 9]
[10 11 12 13 14]]
(2, 5)
Но если у меня есть :
в одном из индексов, тогда у меня есть дополнительное измерение размера 1:
print(a[yindx,:])
print(a[yindx,:].shape)
print(a[:,xindx])
print(a[:,xindx].shape)
Вывод:
[[[ 5 6 7 8 9]
[10 11 12 13 14]]]
(1, 2, 5)
[[[ 2 3 4]]
[[ 7 8 9]]
[[12 13 14]]
[[17 18 19]]]
(4, 1, 3)
Я столкнулся с этой проблемой и с одномерными массивами. Как я могу это исправить?