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)