Присвоение массивов Numpy с расширенным смешанным индексированием

Оригинальный вопрос

Я получаю очень странное сообщение об ошибке при попытке назначить некоторые элементы массива. Я использую комбинацию ломтика и набора индексов. Смотрите следующий простой пример.

 import scipy as sp

 a = sp.zeros((3, 4, 5))
 b = sp.ones((4, 5))

 I = sp.array([0, 1, 3])

 b[:, I] = a[0, :, I]

Этот код поднимает следующееValueError:

ValueError: несоответствие формы: массив значений shape (3,4) не может быть передан для индексации результата shape (3,4)

-

Следовать за

Будьте осторожны при использовании комбинации фрагмента и последовательности. целых чисел. Как указано на GitHub:

x = rand(3, 5, 7)

print(x[0, :, [0,1]].shape)
# (2, 5)

print(x[0][:, [0,1]].shape)
# (5, 2)

Так работает numpy, но, тем не менее, немного сбивает с толку тот факт, что x [0] [:, I] отличается от x [0,:, I]. Поскольку это поведение, которое я хочу, я решил использовать x [0] [:, I] в своем коде.

Ответы на вопрос(3)

Ваш ответ на вопрос