我試圖了解使用坐標列表(不使用循環(huán))從 2d NumPy 數(shù)組中提取值的最佳方法。例如:import numpy as nparr = np.array([ ['AA','AB','AC'], ['BA','BB','BC'], ['CA','CB','CC']])coordinates = [(0,0), (1,1)]經(jīng)過一些實驗:# 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 workarr[*coordinates]想法?
3 回答

波斯汪
TA貢獻1811條經(jīng)驗 獲得超4個贊
您需要使用雙索引。第一個數(shù)組分配給x
坐標,另一個數(shù)組分配給y
坐標,如下所示:
x, y = np.transpose(np.array(coordinates)) arr[x, y]
使用時盡量避免列表理解numpy
:)

MM們
TA貢獻1886條經(jīng)驗 獲得超2個贊
我的意思是你總是可以做
[arr[coordinates[0]],arr[coordinates[1]]]
得到你想要的結果。這將評估為 ['AA','BB']。
對您可以執(zhí)行的任何大小的坐標列表進行概括:
result = [arr[coordinate] for coordinate in coordinates ]
這就是你想要的嗎?

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
使用列表理解:
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']
添加回答
舉報
0/150
提交
取消