Python 如何最好地使用坐标列表从2d numpy数组中选择值?

Python 如何最好地使用坐标列表从2d numpy数组中选择值?,python,arrays,numpy,Python,Arrays,Numpy,我试图了解使用坐标列表(不使用循环)从2d NumPy数组中提取值的最佳方法 例如: import numpy as np arr = np.array([ ['AA','AB','AC'], ['BA','BB','BC'], ['CA','CB','CC'] ]) coordinates = [(0,0), (1,1)] 经过一些实验: # This works but does not return what I expected # I expected [

我试图了解使用坐标列表(不使用循环)从2d NumPy数组中提取值的最佳方法

例如:

import numpy as np

arr = np.array([
    ['AA','AB','AC'],
    ['BA','BB','BC'],
    ['CA','CB','CC']
])

coordinates = [(0,0), (1,1)]
经过一些实验:

# This works but does not return what I expected
# I expected ['AA','BB'], but returned ['AB,'AB']
arr[(0,0), (1,1)]

# This does not work
arr[*coordinates]

想法?

我的意思是你总是可以做的

[arr[coordinates[0]],arr[coordinates[1]]]
为了得到你想要的结果。这将评估为['AA','BB']

对任意大小的坐标列表进行一点概括:

result = [arr[coordinate] for coordinate in coordinates ]

这就是你想要的吗?

使用列表理解:

result = [arr[c] for c in coordinates]
import numpy as np

arr = np.array([["AA", "AB", "AC"], ["BA", "BB", "BC"], ["CA", "CB", "CC"]])

coordinates = [(0, 0), (1, 1)]
result = [arr[c] for c in coordinates]
print(result)
['AA', 'BB']
代码示例:

result = [arr[c] for c in coordinates]
import numpy as np

arr = np.array([["AA", "AB", "AC"], ["BA", "BB", "BC"], ["CA", "CB", "CC"]])

coordinates = [(0, 0), (1, 1)]
result = [arr[c] for c in coordinates]
print(result)
['AA', 'BB']
输出:

result = [arr[c] for c in coordinates]
import numpy as np

arr = np.array([["AA", "AB", "AC"], ["BA", "BB", "BC"], ["CA", "CB", "CC"]])

coordinates = [(0, 0), (1, 1)]
result = [arr[c] for c in coordinates]
print(result)
['AA', 'BB']

您需要使用双重索引。第一个数组分配给
x
坐标,另一个分配给
y
坐标,如下所示:

x, y = np.transpose(np.array(coordinates))
arr[x, y]
使用
numpy
:)时尽量避免列表理解