Python Numpy索引和切片未按预期工作!(虫子?)

Python Numpy索引和切片未按预期工作!(虫子?),python,numpy,Python,Numpy,考虑以下代码 import numpy as np z = np.zeros((3,5,10,100)) indices = np.array([8, 0, 6, 1]) print(z[:,:,indices,:].shape) print(z[1,:,indices,:].shape) 结果如下: (3,5,4100) (4,5100) 我想分配z[1,:,索引,:]=some_array,其中some_array具有形状(5,4100),但该分配会引发错误,因为存在形状不匹配 我对第二个

考虑以下代码

import numpy as np
z = np.zeros((3,5,10,100))
indices = np.array([8, 0, 6, 1])
print(z[:,:,indices,:].shape)
print(z[1,:,indices,:].shape)
结果如下:

(3,5,4100)
(4,5100)

我想分配
z[1,:,索引,:]=some_array
,其中
some_array
具有形状
(5,4100)
,但该分配会引发错误,因为存在形状不匹配
我对第二个输出感到困惑(z[1,:,index,:]的形状)。我想应该是
(5,4100)
。为什么要切换前两个轴?这是一个bug还是有任何解释说明这是正确的行为

我将代码更改为:

for i,index in enumerate(indices):
    z[1,:,index,:] = some_array[i]