首頁 > 後端開發 > Python教學 > NumPy 能否根據列的唯一值有效地將資料分組?

NumPy 能否根據列的唯一值有效地將資料分組?

DDD
發布: 2024-12-05 09:32:10
原創
753 人瀏覽過

Can NumPy Group Data Efficiently Based on a Column's Unique Values?

NumPy 可以依給定欄位將資料分組嗎?

簡介:

將資料分組是在許多資料分析場景中都是至關重要的操作。 NumPy是Python中一個強大的數值庫,提供了各種操作數組的函數,但它缺乏專門的分組函數。本文示範如何在 NumPy 中實現分組,而無需明確使用專用函數。

問題:

NumPy 中是否有一個函數可以按數組的大小對數組進行分組第一列,如提供的數組所示?

array([[ 1, 275],
       [ 1, 441],
       [ 1, 494],
       [ 1, 593],
       [ 2, 679],
       [ 2, 533],
       [ 2, 686],
       [ 3, 559],
       [ 3, 219],
       [ 3, 455],
       [ 4, 605],
       [ 4, 468],
       [ 4, 692],
       [ 4, 613]])
登入後複製

預期輸出:

array([[[275, 441, 494, 593]],
       [[679, 533, 686]],
       [[559, 219, 455]],
       [[605, 468, 692, 613]]], dtype=object)
登入後複製

答案:

雖然分組提供「Pyy 沒有明確提供資料」函數,但它提供了一種受Eelco Hoogendoorn 啟發的替代方法圖書館。此方法依賴陣列的第一列始終遞增的假設。如果不是這種情況,則需要按第一列對陣列進行排序:

a = a[a[:, 0].argsort()]
登入後複製

使用增加第一列值的假設,以下程式碼執行分組運算:

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
登入後複製

此程式碼根據第一列中的唯一值有效地將數組元素分組為子數組。每個子數組代表一個群組,包含具有相同第一列值的所有元素的第二列值。

其他注意事項:

  • 此方法的複雜度為 O (n log(n)) 由於排序操作。
  • 結果清單是 NumPy 數組,無需用於後續 NumPy 操作的轉換操作。
  • 效能比較: 經驗表明,對於較小的資料集,此方法比其他分組方法(包括 Pandas 和 defaultdicts)更快。

因此,NumPy 提供了一種靈活高效的方法,透過利用陣列操作和排序函數來將資料分組,即使沒有專用的分組功能。

以上是NumPy 能否根據列的唯一值有效地將資料分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板