我真的很困惑numpy數組的索引邏輯與幾個維度。下面是一個例子: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,其中A的元素對應於x = 0,2 y = 0,1和z = 1,2。像
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]]
完成這項工作。但我仍然想知道我的第一次嘗試有什麼問題。什麼是做我想做的最好的方式?
我的個人看法:你的方式觸發了Numpy的高級索引。在高級索引上下文中,A [[0,2],[0,1],[1,2]]被解釋爲「在每個維度中選擇每個索引編號(有點貪婪的方法) – 2017-10-17 15:02:34