我遇到了一个奇怪的问题:
from numpy import zeros, arange
aa = zeros([1, 3, 10])
aa[0, :, arange(5)].shape
运行这个给我
(5,3)
,但我期待 (3,5)
.但是,运行以下命令给了我
(3,5)
正如预期的那样。aa = zeros([3, 10])
aa[:, arange(5)]
作为我的程序的一部分,这很容易修复,但它完全破坏了我的信念。
我试图搜索已经回答过但不知道要搜索什么的类似问题。
谢谢你,祝中国新年快乐!
最佳答案
这是混合基本索引和高级索引的情况。第一个和最后一个索引是数字,中间是一个切片。它根据 0
选择值和 arange(5)
,并附加 :
维度在最后。
aa[0, :, :5].shape
应该产生您期望的 (3,5)。
http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing
Numpy 3D array transposed when indexed in single step vs two steps对比行为
y = x[0, :, mask]
z = x[0, :, :][:, mask]
请务必检查对我的答案的评论,因为这是一个错误并将被修复的论点。
关于python - numpy数组索引中的隐式转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306372/