python - 按降序对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) 的多种方法以及进行多次反转,但无法使其正常工作。请指教。
解决方案
您可以在排序后反转数组,如下所示:
arr2 = np.sort(arr)[:, ::-1]
同样使用np.sort(arr[:, ::-1])
似乎与np.sort(arr)
. 在第一种情况下,您只是在排序之前简单地反转数组。
推荐阅读
- pycharm - PyCharm 显示来自某些不存在的检查点文件的重复代码警告?
- python - 从数据框 pandas python 中替换 '()'
- android - RecyclerView Firebase 中的图像微调器
- java - 如何在java中跟踪下载内容的大小
- authentication - 将 NestJs Passport 配置提取到 npm 包中
- go - 通过反射在运行时按名称动态实例化结构
- android - 我什么时候应该在 Fragment 生命周期中收集 SharedFlow 事件
- java - 在 json 的第一个元素中添加 json 对象
- java - 使用多个 if 检查 getter 值来优化方法
- java - AvroParquetWriter 不写入文件