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)
作为我的程序的一部分,这很容易修复,但它完全毁了我的信念。
我试图搜索已经回答的类似问题,但不知道要搜索什么。
谢谢您,祝您农历新年快乐!
这是混合基本索引和高级索引的情况。第一个和最后一个索引是数字,中间是切片。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)
请务必检查我的答案的评论,因为有人认为这是一个错误并将被修复。