所以我是一个二维数组,当使用a[np.argsort(-a[:,1])]
按第二列排序时,如下所示:
array([[ 30. , 98.7804878 ],
[ 24. , 98.7804878 ],
[ 21. , 98.7804878 ],
[ 26. , 98.7804878 ],
[ 20. , 98.70875179],
[ 4. , 98.27833572],
[ 1. , 7.10186514]])
现在我想用最低的" id"来排序。列,所以它看起来像这样:
array([[ 21. , 98.7804878 ],
[ 24. , 98.7804878 ],
[ 26. , 98.7804878 ],
[ 30. , 98.7804878 ],
[ 20. , 98.70875179],
[ 4. , 98.27833572],
[ 1. , 7.10186514]])
我无法弄清楚如何做到这一点,即使我从第一个中取出最高百分比然后再订购它们。
答案 0 :(得分:4)
您可以使用np.lexsort
:
>>> a[np.lexsort((a[:, 0], -a[:, 1]))]
array([[ 21. , 98.7804878 ],
[ 24. , 98.7804878 ],
[ 26. , 98.7804878 ],
[ 30. , 98.7804878 ],
[ 20. , 98.70875179],
[ 4. , 98.27833572],
[ 1. , 7.10186514]])
按-a[:, 1]
排序,然后按a[:, 0]
排序,返回索引数组,而不是用于索引a
。