Jos*_*ase 2 python arrays sorting numpy
所以我有一个二维数组,当使用第二列排序时,它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]])
Run Code Online (Sandbox Code Playgroud)
现在我想按最低的“id”列对它进行排序,所以它看起来像这样:
array([[ 21. , 98.7804878 ],
[ 24. , 98.7804878 ],
[ 26. , 98.7804878 ],
[ 30. , 98.7804878 ],
[ 20. , 98.70875179],
[ 4. , 98.27833572],
[ 1. , 7.10186514]])
Run Code Online (Sandbox Code Playgroud)
我不知道怎么做,即使我从第一个中获取最高的百分比然后订购它们。
您可以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]])
Run Code Online (Sandbox Code Playgroud)
这对 by-a[:, 1]和 by 进行排序a[:, 0],返回一个索引数组,您可以使用它来索引a。