Я предполагаю, что этот код пытается продемонстрировать, что, если вы индексируете массив с помощью массива, результатом является массив такой же формы, что и индексирующий массив (в данном случае a
), а не индексированный массив (т.е. b
)
Но это сбивает с толку, потому что b
полон 1
с. Скорее попробуйте это с b
, полным разных чисел:
>> a = np.ones([1,1,5,5], dtype='int64')
>> b = np.arange(11) + 3
array([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
>>> b[a]
array([[[[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4]]]])
, поскольку a
является массивом 1
s, единственный индекс b
, который проиндексирован, это b[1]
, что равно 4
. Форма результата - форма a
, массив, используемый в качестве индекса.