Python 如何最好地使用坐标列表从2d numpy数组中选择值?
我试图了解使用坐标列表(不使用循环)从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 [
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
:)时尽量避免列表理解