這是後How to extract rows from an numpy array based on the content?的相對的問題,我用下面的代碼基於列的內容來分割行:如何從排列的numpy數組中提取數組?
np.split(sorted_a,np.unique(sorted_a[:,1],return_index=True)[1][1:])
代碼工作得很好,但後來我試過其他代碼分裂個案(如下),我發現可能有錯誤的結果(如案例#1所示)。
CASE#1
[[2748309, 246211, 1],
[2748309, 246211, 2],
[2747481, 246201, 54]]
OUTPUT#1
[]
[[2748309, 246211, 1],
[2748309, 246211, 2],
[2747481, 246201, 54]]
the result I want
[[2748309, 246211, 1],
[2748309, 246211, 2]]
[[2747481, 246201, 54]]
我覺得代碼可以成功地只能與小數字,用更少的位數的情況下拆分行,我不知道如何解決問題,在上述情況下#1顯示。所以在這篇文章中,我有兩個小的相關問題:
1.如何拆分其中包含更多數字的行? (如情況1所示)?
2.如何在兩種情況下處理(拆分)數據,包括第二列中具有相同元素的#1行,但第一列中具有相同元素的第一行和#2行不同,但在第二個不同? (也就是說,Python可以同時考慮第一列和第二列中的內容來區分行)
隨時給我建議,謝謝。
更新#1
的ravel_multi_index
功能可以處理這種整數陣列任務,但如何處理含浮標陣?
謝謝你的建議和詳細的鏈接,ravel_multi_index函數可以用整數處理數組,但我想知道如何做與浮點數組相同的工作,因爲函數似乎只能用整數工作。 – Heinz
@ Heinz在計算'lidx'的第一步中,使用'np.unique(a [:,:2],return_inverse = 1)[1] .reshape(-1,2)'代替'arr [ ,:2]'。 – Divakar
Thx,工作! – Heinz