python - 基于一列元素对两个数组进行排序和连接

标签 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.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

最佳答案

您可以使用 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]

关于python - 基于一列元素对两个数组进行排序和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25291233/

相关文章:

python - 我怎样才能摆脱 yield 并在我的代码中使用另一个函数

python - numpy View 如何知道它引用的值在原始 numpy 数组中的位置?

python - 将原始数据插入到python中随机生成的数据中

python - 抓取雅虎财经财务比率

python - 多处理时如何获取每个进程ID

Try/Except block 的 Python 单元测试

c++ - 使用矩阵从c++中的函数返回二维数组

arrays - 在 MATLAB 中查找向量中重复次数最多的 10 个元素

java - java中数组索引越界

python - Numpy Softmax - 具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()