如何对特定行上的 numpy 数组进行排序,并相应地更改其他行?

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


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

我怎样才能做到这一点?谢谢。我尝试使用 axis=-1 和 0 进行 np.sort; 它们不是我需要的。


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


胡说叔叔
浏览 72回答 1
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 ]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python