Python 基于一列元素对两个数组进行排序和合并

Python 基于一列元素对两个数组进行排序和合并,python,arrays,numpy,pandas,multidimensional-array,Python,Arrays,Numpy,Pandas,Multidimensional Array,我有一个很大的数据数组,形状是(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.02

我有一个很大的数据数组,形状是
(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
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
输出数组类似于:

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 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
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

您可以使用
numpy.argsort()
对两个数组的最后一列进行排序,然后使用
numpy.hstack()
组合它们

原始顺序用于将连接的数组返回到原始顺序

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]

你用了熊猫牌。。。因此,如果这些是数据帧,只需将每个数据集的最后一列作为键进行标准合并。只需确保键是唯一的(和相同的数据类型!),或者创建一个唯一的。在这里用浮点数合并并不理想,但可能还可以,只要检查最后是否有一对一的合并。@SaulloCastro我想要一对一的对应,我认为列中数字的精度足以满足这个条件!