2017-01-06 70 views
0

我有一個相當大的numpy的矩陣(2-d陣列具有多於1000個* 1000個細胞),並且在以下形式的索引的另一2- d陣列2-d numpy的數組:[[x1,y1],[x2,y2],...,[xn,yn]],這是也相當大(N> 1000)。我想提取,因爲它們的(X,Y)座標出現在陣列儘可能高效,即沒有循環矩陣中的所有單元格。如果數組是一個元組的我可能只是採樣使用另一種陣列

cells = matrix[array] 

,並得到我想要的東西陣列,但陣列是不是該格式,我無法找到一種有效的方式將它轉換成所需的形狀...

+0

'矩陣[XY [:,0],XY [:1] '? – Divakar

+0

或'矩陣[元組(xy.T)]'不確定它是更有效的 –

回答

1

你可以讓你的陣列分成數組的這樣一個元組:

tuple(array.T)

這的np.where()輸出的風格,這可以被索引相匹配。

cells=matrix[tuple(array.T)]

,你也可以做標準numpy的陣列切片,並得到Divakar的答案評論:

cells=matrix[array[:,0],array[:,1]]