Python 使用列表索引numpy数组会产生意外的形状

Python 使用列表索引numpy数组会产生意外的形状,python,indexing,numpy-ndarray,Python,Indexing,Numpy Ndarray,如果我创建一个数组 arr = np.ones((10,5,5,100)) 并尝试获取轴0索引1、轴1全部、轴2全部、轴3索引2、5、10的数据 axis3_inds = [2,5,10] newarr = arr[0,:,:,axis3_inds] newarr具有形状(3,5,5) 我期待着“5,5,3”的形状 为什么会发生这种情况 我可以通过以下方式获得所需的数据和形状: newarr = arr[0,:,:,:][:,:,axis3_inds] #newarr has shape

如果我创建一个数组

arr = np.ones((10,5,5,100))
并尝试获取轴0索引1、轴1全部、轴2全部、轴3索引2、5、10的数据

axis3_inds = [2,5,10]
newarr = arr[0,:,:,axis3_inds]
newarr
具有形状
(3,5,5)

我期待着“5,5,3”的形状

为什么会发生这种情况

我可以通过以下方式获得所需的数据和形状:

newarr = arr[0,:,:,:][:,:,axis3_inds]  #newarr has shape (5,5,3)

我不太清楚其中的微妙之处,但Numpy将
0
axis3\u inds
都视为“高级索引”。当有多个高级索引时,所有此类索引都会合并并移动到前端。您也可以只编写
arr[0][:,:,axis3\u索引]