这是后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