如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]

Posted

技术标签:

【中文标题】如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]【英文标题】:How to sort a numpy array on a specific row, with other rows to change accordingly? [duplicate] 【发布时间】:2021-01-13 03:32:36 【问题描述】:

我有一个像这样的 numpy 数组 a

In [318]: a
Out[318]:
array([[0. , 1. , 2. , 3. ],
       [0.5, 0.3, 0.2, 0.25]])

我需要沿第二行(带有 [0.5,0.3,0.2,0.25] 的那一行)排序,同时相应地更改第一行。在这种情况下,预期的结果是

2    3     1.   0
0.2, 0.25, 0.3, 0.5

我该怎么做?谢谢你。我尝试了 np.sort 与 axis=-1 和 0;它们不是我需要的。

重要提示:性能是我解决问题的关键。我的数组,来自图像处理应用程序,通常有 N 列,N 接近 400 万。

【问题讨论】:

【参考方案1】:

使用np.argsort()获取已排序行的索引,然后将其用作掩码对整个数组进行排序(基于列):

In [69]: mask = np.argsort(a[1])                                                                                                                                                                            

In [70]: a[:, mask]                                                                                                                                                                                         
Out[70]: 
array([[2.  , 3.  , 1.  , 0.  ],
       [0.2 , 0.25, 0.3 , 0.5 ]])

【讨论】:

以上是关于如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

沿特定轴按另一个数组对 numpy 数组进行排序

如何按轴对numpy数组进行排序并保留行[重复]

按多个数组对 Tableview 行进行排序

有没有办法读取 C++ 中连续特定行上的数字?

如何在Docker命令行上的Docker注册表中找到具有特定标记的Docker镜像?

多次对向量进行排序