在Numpy 中用另一個陣列索引一個陣列
考慮兩個矩陣,A 和 B ,其中A 包含任意值且B 保存A 中元素的索引。任務是根據 B 指定的索引從 A 中提取元素。此索引允許選擇性元素檢索。
使用高級索引的解決方案:
Numpy 的高級索引使用表達式啟用此操作:
A[np.arange(A.shape[0])[:,None], B]
此方法利用從B 檢索的行索引和列索引的組合來檢索A.
使用線性索引的解:
使用線性索引的解:
m, n = A.shape out = np.take(A, B + n*np.arange(m)[:,None])
另一種方法涉及線性索引:這裡,m 和n 代表維度A 以及np.take ()
函數中的操作確保基於B 的元素正確索引。
範例:
import numpy as np A = np.array([[2, 4, 5, 3], [1, 6, 8, 9], [8, 7, 0, 2]]) B = np.array([[0, 0, 1, 2], [0, 3, 2, 1], [3, 2, 1, 0]]) # Advanced indexing result1 = A[np.arange(A.shape[0])[:,None], B] # Linear indexing m, n = A.shape result2 = np.take(A, B + n*np.arange(m)[:,None]) print("Result using advanced indexing:") print(result1) print("Result using linear indexing:") print(result2)
讓我們用一個例子來說明這些解法範例:
Result using advanced indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]] Result using linear indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]]
以上是如何用另一個 Numpy 數組索引一個 Numpy 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!