首頁  >  文章  >  後端開發  >  如何有效地將 NumPy 陣列分組?

如何有效地將 NumPy 陣列分組?

Barbara Streisand
Barbara Streisand原創
2024-11-24 22:40:11981瀏覽

How Can I Efficiently Group NumPy Arrays?

使用NumPy 進行高效能數組分組

雖然NumPy 可能不提供專門為數組分組而設計的開箱即用函數,但有是可以有效達成類似目標的通用技術

受Eelco庫的啟發

一種方法受 Eelco Hoogendoorn 庫的啟發,透過利用輸入數組的第一列單調遞增的假設來簡化它。如果沒有,可以先使用 a = a[a[:, 0].argsort()] 進行排序。

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])

唯一識別組

這個程式碼片段利用 np.unique() 來辨識第一列中的唯一值,並傳回它們的索引。這些索引用於將第二列拆分為代表每個群組的單獨子數組。

時間複雜度和性能

此方法表現出 O(n) 複雜度,使其高度高效的。對不同組大小的數組進行的經驗 timeit 測量證實了其相對於 pandas、numpy-indexed 和 defaultdict 等其他方法的性能優勢。

替代解決方案

超越所提出的方法,也可以探索基於 NumPy 的技術(例如numpy_groupies)進行分組

其他注意事項

如果輸入陣列的第一列未排序,建議在分組之前對其進行排序,以確保結果準確。請記住,某些排序演算法(例如 argsort)的時間複雜度為 O(n log(n))。

以上是如何有效地將 NumPy 陣列分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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