numpy 数组索引中的隐式转置

Man*_*ult 4 python indexing numpy

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

from numpy import zeros, arange
aa = zeros([1, 3, 10])
aa[0, :, arange(5)].shape
Run Code Online (Sandbox Code Playgroud)

运行这个给了我(5,3),但我期待着(3,5)

然而,运行以下命令给了我(3,5)预期的结果。

aa = zeros([3, 10])
aa[:, arange(5)]
Run Code Online (Sandbox Code Playgroud)

作为我的程序的一部分,这很容易修复,但它完全毁了我的信念。

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

谢谢您,祝您农历新年快乐!

hpa*_*ulj 5

这是混合基本索引和高级索引的情况。第一个和最后一个索引是数字,中间是切片。0它根据和来选择值arange(5),并:在末尾附加尺寸。

aa[0, :, :5].shape
Run Code Online (Sandbox Code Playgroud)

应该产生您期望的 (3,5) 。

http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing

单步索引与两步索引时的 Numpy 3D 数组转置 对比了以下行为

y = x[0, :, mask]
z = x[0, :, :][:, mask]
Run Code Online (Sandbox Code Playgroud)

请务必检查我的答案的评论,因为有人认为这是一个错误并将被修复。