如何从给定的n-dim索引中获取值

时间:2018-05-17 10:16:53

标签: python

我有一些像这样的索引:

ind = [(1,5),(2,2),(3,1)]

我有一个数组:

arr = np.arange(36).reshape(6,6)

我希望得到结果:

arr[1,5], arr[2,2], arr[3,1]

什么是最干净的方法?

我知道我可以这样做:

c=np.empty(len(ind))
for i in len(ind):
    a,b = ind[i]
    c[i] = arr[a,b]

但我想要一个更像矩阵的方法来处理这个问题,但不是像元素一样的方法。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

为什么不使用列表理解:

ind = [(1,5),(2,2),(3,1)]
arr = np.arange(36).reshape(6,6)

result = [arr[i] for i in ind]

如果您需要将其转换为numpy数组,您只需将结果列表传递给它:

result = np.array([arr[i] for i in ind])

答案 1 :(得分:0)

你可以直接写

c=[]
for i in range(len(ind)):
    c.append( arr[ ind[i][0], ind[i][1] ] )