我有一大堆数据,形状为(24000, 5)
。我将此数组作为代码的输入,但代码改组并更改了第四列,只有最后一列完好无损。我能在最后一列中找到类似元素的最快方法是什么,并将生成列中的对应行与旧列一致并创建一个新数组?
例如输入数组如下所示:
25.463 -10.249 -0.211 0.912 0.432
24.910 -09.089 0.722 -0.304 0.391
25.719 -10.522 -0.639 -0.002 0.638
24.022 -10.098 0.028 -0.007 1.921
输出数组类似于:
230.1 321.9 -0.311 -0.010 1.921
349.6 301.2 0.740 -0.309 0.391
189.9 321.9 -0.220 0.920 0.432
259.4 292.8 -0.641 0.000 0.638
最终结果应该是这样的:
25.463 -10.249 -0.211 0.912 189.9 321.9 -0.220 0.920 0.432
24.910 -09.089 0.722 -0.304 349.6 301.2 0.740 -0.309 0.391
25.719 -10.522 -0.639 -0.002 259.4 292.8 -0.641 0.000 0.638
24.022 -10.098 0.028 -0.007 230.1 321.9 -0.311 -0.010 1.921
答案 0 :(得分:1)
您可以使用numpy.argsort()
对两个数组的最后一列进行排序,然后使用numpy.hstack()
进行组合。
orig_order
用于将连接数组返回原始顺序...
import numpy as np
as1 = np.argsort(a1[:,-1])
orig_order = np.argsort(as1)
as2 = np.argsort(a2[:,-1])
ans = np.hstack((a1[as1][:,:-1], a2[as2]))[orig_order]