我很惊讶这个特定的问题以前没有被问过,但我真的没有在 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/