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

hoo*_*rEE 2 arrays indexing 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)]
Run Code Online (Sandbox Code Playgroud)

我想要的功能,但不知道名称,工作原理如下:

>>> func(A,C)
[0, 7, 24]
Run Code Online (Sandbox Code Playgroud)

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

小智 6

你有一个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])
Run Code Online (Sandbox Code Playgroud)

或者更简单:

>>> A[tuple(zip(*C))]
array([ 0,  7, 24])
Run Code Online (Sandbox Code Playgroud)