首頁  >  文章  >  後端開發  >  如何用另一個 Numpy 數組索引一個 Numpy 數組?

如何用另一個 Numpy 數組索引一個 Numpy 數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-12 02:24:01599瀏覽

How to Index One Numpy Array by Another?

在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])

另一種方法涉及線性索引:這裡,mn 代表維度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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn