我有一些这样的索引:
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]
但是我想要一种更像矩阵的方法来处理这个问题,而不是类似元素的方法。 有什么建议吗?
为什么不直接使用列表理解:
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])
你可以直接写
c=[]
for i in range(len(ind)):
c.append( arr[ ind[i][0], ind[i][1] ] )