首頁 >後端開發 >Python教學 >如何在 NumPy 數組中高效查找匹配值的行索引?

如何在 NumPy 數組中高效查找匹配值的行索引?

Barbara Streisand
Barbara Streisand原創
2024-12-15 18:06:12662瀏覽

How to Efficiently Find Row Indices Matching Values in a NumPy Array?

找出 Numpy 陣列中各值的行索引

1。理解問題

給定一個數組 X 和一個數組 searched_values,任務是找到 X 中與 searched_values 中相應行匹配的行索引。

2。使用 NumPy 廣播的方法

np.where((X==searched_values[:,None]).all(-1))[1]

3.使用 np.ravel_multi_index 和 np.in1d

dims = X.max(0)+1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
                    np.ravel_multi_index(searched_values.T,dims)))[0]

4 的記憶體高效方法。了解 np.ravel_multi_index

np.ravel_multi_index 將 n 維索引的 2D 陣列轉換為線性索引等價物。例如,給定 X 和 dims,它將計算:

np.ravel_multi_index(X.T,dims)

結果為 [30, 66, 61, 24, 41],其中每個數字表示 X 中相應行的線性索引。

5。選擇唯一線性索引的維度

為np.ravel_multi_index 選擇維度以產生唯一線性索引時,請考慮以下事項:

  • 輸入數組(X) 中的每一列代表一個軸被映射到的網格的。
  • 為了確保唯一的線性索引,應該考慮每個軸的最大拉伸,這是每列加 1。

對於給定的 X:

dims = X.max(0)+1 # [10, 7]

這將建立一個至少具有指定維度的網格,確保唯一的線性索引。

以上是如何在 NumPy 數組中高效查找匹配值的行索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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