我有一个非常大的numpy矩阵(2-D数组,超过1000 * 1000个单元格),以及另一个2-D索引数组,形式如下:[[x1,y1],[x2,y2],...,[xn,yn]]
,它也非常大(n > 1000)。我想提取矩阵中的所有单元格,它们的(x,y)坐标尽可能高效地出现在数组中,即没有循环。如果数组是一个元组数组,我可以
cells = matrix[array]
并得到我想要的,但数组不是那种格式,我找不到一种有效的方法将其转换为所需的形式......
答案 0 :(得分:1)
你可以将你的数组变成这样的数组元组:
tuple(array.T)
这匹配np.where()
的输出样式,可以将其编入索引。
cells=matrix[tuple(array.T)]
你也可以做标准的numpy数组切片,并在评论中得到Divakar的回答:
cells=matrix[array[:,0],array[:,1]]