我遇到了一个奇怪的问题:
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 :(得分:0)
这是混合基本和高级索引的情况。第一个和最后一个索引是数字,中间是一个切片。它会根据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]
请务必查看我的答案的评论,以确定这是一个错误并将被修复的论点。