我可以索引與一個元組或甚至一個元組的列表中的2D numpy的陣列操縱索引到2d numpy的陣列
a = numpy.array([[1,2],[3,4]])
i = [(0,1),(1,0)] # edit: bad example, should have taken [(0,1),(0,1)]
print a[i[0]], a[i]
(給出2 [2 3]
)
然而,我無法操縱與向量的元組算術,即
k = i[0]+i[1]
沒有給出想要的(1,1)
而是連接。
另一方面,對於索引使用numpy數組,算術運行,但索引不起作用。
i = numpy.array(i)
k = i[0]+i[1] # ok
print a[k]
給出陣列[[3 4], [3 4]]
而不是所期望的4
。
有沒有辦法到做索引向量運算還能夠到指數numpy的陣列與他們(未經元組派生一個類和重載所有的運營商)?
This question看起來很有希望,但我無法弄清楚我是否可以將它應用於我的情況。
編輯(上接受的答案評論):
...和指標的排列工作再工作原理以及使用地圖
arr = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
ids = numpy.array([(0,1),(1,0)])
ids += (0,1) # shift all indices by 1 column
print arr[map(tuple,ids.T)]
(迷惑到我爲什麼需要轉置,雖然。 本來上面也遇到這個問題, ,簡直與幸運[(0,1),(0,1)])
+1簡單啊,應該自己想想這個吧!這會在我的代碼中給出'tuple',但現在我會使用它,如果它得到了太多的'tuple',我仍然可以派生出我自己的類 – 2012-03-15 14:48:10