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:])
此程式碼根據第一列中的唯一值有效地將數組元素分組為子數組。每個子數組代表一個群組,包含具有相同第一列值的所有元素的第二列值。
其他注意事項:
因此,NumPy 提供了一種靈活高效的方法,透過利用陣列操作和排序函數來將資料分組,即使沒有專用的分組功能。
以上是NumPy 能否根據列的唯一值有效地將資料分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!