簡體   English   中英

Python - 如何根據第一列拆分數組?

[英]Python - How to split an array based on the first column?

我有以下虛假數據。 將其讀入數組后,它將具有形狀 (8, 3)。 現在我想根據第一列(ID)拆分數據並返回一個數組列表,其形狀為:[(3,3),(2,3),(3,3)]。 我認為 np.split 可以通過將一維數組分配給“indices_or_sections”參數來完成這項工作。 但是有沒有更方便的方法來做到這一點?

1   700 35
1   700 35
1   700 35
2   680 25
2   680 25
3   750 40
3   750 40
3   750 40

您可以通過使用np.splitsortnp.uniquenp.cumsum的組合來實現此目的。

>>> a = [[1, 700, 35],
...      [1, 700, 35],
...      [1, 700, 35],
...      [2, 680, 25],
...      [2, 680, 25],
...      [3, 750, 40],
...      [3, 750, 40],
...      [3, 750, 40]]
>>> a = np.array(a)
>>> # sort the array by first column. 
>>> a = a[a[:,0].argsort()]
>>> np.split(a, np.cumsum(np.unique(a[:, 0], return_counts=True)[1])[:-1])
[array([[  1, 700,  35],
       [  1, 700,  35],
       [  1, 700,  35]]), array([[  2, 680,  25],
       [  2, 680,  25]]), array([[  3, 750,  40],
       [  3, 750,  40],
       [  3, 750,  40]])]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM