如何对特定行上的 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 数组进行排序,其他行相应更改? [复制]的主要内容,如果未能解决你的问题,请参考以下文章