我对NumPy数组的多维索引逻辑感到非常困惑。以下是示例:
import numpy as np
A = np.arange(18).reshape(3,2,3)
[[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17]]])
这给了我一个形状为(3,2,3)的数组,假设称它们为(x,y,z)。现在我想要一个数组B,其中包含与x = 0,2 y =0,1和z = 1,2相对应的A中的元素。就像这样:
array([[[ 1, 2],
[4, 5]],
[[13, 14],
[16, 17]]])
一开始我天真地认为
B=A[[0,2],[0,1],[1,2]]
会完成工作。但它会给出
array([ 2, 104])
并且不起作用。
A[[0,2],:,:][:,:,[1,2]]
这行代码可以完成任务。但我仍然想知道我的第一次尝试有什么问题。以及我想要做到这件事的最佳方式是什么?