如何从 NumPy 中的二维数组获取多个坐标

How to get multiple coordinates from 2d array in NumPy

我有一个矩阵 A 和一个对应于坐标 C 的(元组列表)。我如何获得 A[C]

例如:

>>> A
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> C
[(0,0), (1,2), (4,-1)]

我想要但不知道名字的功能是这样的:

>>> func(A,C)
[0, 7, 24]

是否存在这样的函数(或一些时髦的 NumPy 索引语法),或者 for 循环是否是获得此结果的唯一方法?

您有 X,Y 对的列表。这不能直接提供给数组索引器 - 它需要稍微改变一下。

而不是 [(X,Y), (X,Y), (X,Y)],您需要 [(X,X,X), (Y,Y,Y)]:

>>> x = [x for x,y in C]
>>> y = [y for x,y in C]
>>> A[x, y]
array([ 0,  7, 24])

或者更简单:

>>> A[tuple(zip(*C))]
array([ 0,  7, 24])