我想我正确理解了 python/numpy 中数组的索引。但今天遇到了一个问题,如下:
我有一个 6 维数组,例如A
和 A.shape = (11,1,9,1,5,7)
。
然后我按如下方式使用索引:
B = A[:,0,0,0,[3,4,2],0]
和 B.shape = (11,3)
正如预期的那样;
C = A[:,0,0,0,[3,4,2],:]
和 C.shape = (11,3,7)
正如预期的那样;
但是当我说:
D = A[:,0,:,0,[3,4,2],0]
正如我所料,和D.shape
应该是(11,9,3)
,但是,python返回了D.shape = (3, 11, 9)
.
我对数组 D
的形状感到非常困惑。
有谁可以给我简单解释一下吗? 非常感谢!
最佳答案
A[:,0,:,0,[3,4,2],0]
带有“高级”列表的索引,[3,4,2]
生成大小为 3 的维度。然后添加第 1 维和第 3 维,形成 (3,11,9) 形状。
这种行为有些争议,特别是当其他索引是标量时。当有两个索引列表时,文档中给出的理由更加清晰。
关于python numpy 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657497/