python - 有效地按降序对numpy数组进行排序?

标签 python arrays sorting numpy

我很惊讶这个特定的问题以前没有被问过,但我真的没有在 SO 或 np.sort 的文档中找到它。

假设我有一个包含整数的随机 numpy 数组,例如:

> temp = np.random.randint(1,10, 10)    
> temp
array([2, 4, 7, 4, 2, 2, 7, 6, 4, 4])

如果我对它进行排序,默认情况下我会得到升序:

> np.sort(temp)
array([2, 2, 2, 4, 4, 4, 4, 6, 7, 7])

但我希望解决方案按降序顺序排序。

现在,我知道我总能做到:

reverse_order = np.sort(temp)[::-1]

但是这最后的语句有效吗?它不是按升序创建一个副本,然后将这个副本反转以获得相反顺序的结果吗?如果确实如此,是否有有效的替代方案?它看起来不像 np.sort 接受参数来更改排序操作中比较的符号以以相反的顺序获取事物。

最佳答案

temp[::-1].sort() 对数组进行就地排序,而 np.sort(temp)[::-1] 创建一个新的数组。

In [25]: temp = np.random.randint(1,10, 10)

In [26]: temp
Out[26]: array([5, 2, 7, 4, 4, 2, 8, 6, 4, 4])

In [27]: id(temp)
Out[27]: 139962713524944

In [28]: temp[::-1].sort()

In [29]: temp
Out[29]: array([8, 7, 6, 5, 4, 4, 4, 4, 2, 2])

In [30]: id(temp)
Out[30]: 139962713524944

关于python - 有效地按降序对numpy数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26984414/

相关文章:

python - 列表元组的解包列表

python - OS X 上的Python 的seek() 坏了吗?

python - 如何在 FUSE readdir 调用中返回文件统计信息?

javascript - 整理对象数组中相同的键并对值求和 javascript

arrays - Perl:从子程序返回哈希

c++ - 基数排序 base 256 性能

c# - 如何对文件 txt 第 5000000 行进行排序?

python - 如何将嵌套字典变成矩阵列表?

Java - 数组中的 NullPointerException

c - 错误 sliceShiftLeft() 函数