numpy数组索引中的隐式转置

时间:2016-02-10 03:36:20

标签: python numpy indexing

我遇到了一个奇怪的问题:

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)]

作为我计划的一部分,这很容易解决,但这完全破坏了我的信念。

我试图搜索已经回答的类似问题,但不知道要搜索什么。

谢谢你,中国农历新年快乐!

1 个答案:

答案 0 :(得分:0)

这是混合基本和高级索引的情况。第一个和最后一个索引是数字,中间是一个切片。它会根据0arange(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]

请务必查看我的答案的评论,以确定这是一个错误并将被修复的论点。