I、次のコード/データを有する:パイソン - (acending降順)2列によってNP 2Dアレイをソート
import numpy as np
data = np.array([
[12, 1, 0.7, 0],
[13, 2, 0.5, 1],
[41, 3, 0.3, 0],
[20, 2, 0.8, 0],
[51, 2, 0.7, 0],
[32, 0, 0.9, 0],
[17, 4, 0.7, 1],
[54, 1, 0.6, 1],
[22, 1, 0.4, 1],
[74, 0, 0.5, 0],
[11, 4, 0.3, 1],
[13, 3, 0.8, 0],
[15, 4, 0.3, 0],
[65, 3, 0.2, 1],
])
私は2次元配列をソートする:主データでは、[:, 1] acendingでオーダー[:, 2]の順序を降順でのデータ(最高は最低にする) はので、私は次のコードを作ってみた、(最低から最高まで)及び第二:
data[:, 2] = -data[:, 2]
ind = np.lexsort((data[:, 2], data[:, 1]))
data[:, 2] = -data[:, 2]
data = data[ind]
print data
もたらした:
[[ 32. 0. 0.9 0. ]
[ 74. 0. 0.5 0. ]
[ 12. 1. 0.7 0. ]
[ 54. 1. 0.6 1. ]
[ 22. 1. 0.4 1. ]
[ 20. 2. 0.8 0. ]
[ 51. 2. 0.7 0. ]
[ 13. 2. 0.5 1. ]
[ 13. 3. 0.8 0. ]
[ 41. 3. 0.3 0. ]
[ 65. 3. 0.2 1. ]
[ 17. 4. 0.7 1. ]
[ 11. 4. 0.3 1. ]
[ 15. 4. 0.3 0. ]]
その正しい。しかし、私はそれがより良い方法を行うかどうかを知りたいと思います。より短い実行時間で実行することが可能な場合は最初に実行します。二番目に、より簡単なピトニクスコードです。
(ニシキヘビとより多くの)それをさらに短くするために、私はこれを行うことができます。
ind = np.lexsort((-data[:, 2], data[:, 1]))
data = data[ind]
ランタイムは、まだ未解決のまま。あなたが直接np.lexsort
と否定第二のカラムを使用することができ
[This(http://stackoverflow.com/questions/6835531/sorting-a-python-array-recarray-by-column)が役に立つかもしれません。 –