首页 > 解决方案 > 按降序对numpy多维数组的每一行进行排序

问题描述

我有一个 np.array:

arr = [[ 0.4472136  -0.54707327  0.57708891  0.20546525 -0.35420794]
      [ 0.4472136  -0.23091006 -0.40818058  0.5190655   0.55735103]
      [ 0.4472136  -0.2850627  -0.35696504 -0.76864019 -0.02252698]
      [ 0.4472136   0.55494541  0.51548435 -0.19768884  0.43270151]
      [ 0.4472136   0.50810061 -0.32742763  0.24179828 -0.61331762]]

如果我这样做arr2 = np.sort(arr[:, ::-1]),我会得到:

arr2 = [[-0.54707327 -0.35420794  0.20546525  0.4472136   0.57708891]
       [-0.40818058 -0.23091006  0.4472136   0.5190655   0.55735103]
       [-0.76864019 -0.35696504 -0.2850627  -0.02252698  0.4472136 ]
       [-0.19768884  0.43270151  0.4472136   0.51548435  0.55494541]
       [-0.61331762 -0.32742763  0.24179828  0.4472136   0.50810061]]

所以第一行的预期输出将是:

arr2 = [[0.57708891  0.4472136  0.20546525  -0.35420794  -0.54707327]
       ...]

但这给了我升序,我希望每一行都降序。我已经尝试了 arr.sort 和 np.sort(arr) 的多种方法以及进行多次反转,但无法使其正常工作。请指教。

标签: pythonnumpy

解决方案


您可以在排序后反转数组,如下所示:

arr2 = np.sort(arr)[:, ::-1]

同样使用np.sort(arr[:, ::-1])似乎与np.sort(arr). 在第一种情况下,您只是在排序之前简单地反转数组。


推荐阅读