我需要按数组的第一列降序排序。具体来说,我的代码是:
>>> x = np.array([[2, 3], [1998,5], [1998,7]])
>>> x = x[np.argsort(x[:,0])]
但结果是
^{pr2}$但我需要按降序排列。有人能给我解释一下怎么做吗?在
编辑:@Babyburger提出了这个解决方案:
x = x[np.argsort(x[:,0])][::-1]
那个给的
array([[1998, 7],
[1998, 5],
[ 2, 3]])
可以,但我希望第一列的值相同,顺序不变。所以输出结果是
array([[1998, 5],
[1998, 7],
[ 2, 3]])
有简单的方法吗?在
在这个特定的需求中,您可以使用python的
sorted
,它是{a1}:它是这样做的:使用每行的第一个元素进行比较(通过
lambda
访问器)并对其求反以降低顺序。通过稳定性,如果第一个元素相同,则行将保持顺序输出:
^{pr2}$编辑:顺便说一句,如果您想在前面的列完全相同(顺序相同)时按以下列排序:
^{3}$这会将行转换为列表,然后使用sequence comparison。注意在本例中,它将按递减顺序排序(因此
(-x)
)相关问题 更多 >
编程相关推荐