我可以索引与一个元组或甚至一个元组的列表中的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