などのnumpyの配列は私がnumpy.arrayを使用して配列に作ったリストソートテーブル
[[0, 3], [5, 1], [2, 1], [4, 5]]
がありますか?特に、2番目の列を昇順に並べ替え、最初の列を昇順にソートすることで、結びつきを解決したいと考えています。だから私は望みます:
[[2 1]
[5 1]
[0 3]
[4 5]]
何か助けていただければ幸いです!
などのnumpyの配列は私がnumpy.arrayを使用して配列に作ったリストソートテーブル
[[0, 3], [5, 1], [2, 1], [4, 5]]
がありますか?特に、2番目の列を昇順に並べ替え、最初の列を昇順にソートすることで、結びつきを解決したいと考えています。だから私は望みます:
[[2 1]
[5 1]
[0 3]
[4 5]]
何か助けていただければ幸いです!
あなたはnumpy.lexsort()
を使用することができ、具体的にあなたのケースで
import numpy as np
x = np.array([[0,3],[5,1],[2,1],[4,5]])
x[np.lexsort((x[:,0],x[:,1]))]
出力
array([[2,1],[5,1],[0,3],[4,5]])
をhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.lexsort.html#numpy.lexsort
を参照してください:
>>> a = numpy.array([[0, 3], [5, 1], [2, 1], [4, 5]])
>>> a[numpy.lexsort(a.T)]
array([[2, 1],
[5, 1],
[0, 3],
[4, 5]])
A一度に
a = np.array([[0, 3], [5, 1], [2, 1], [4, 5]])
subarray = a[:,1] # 3,1,1,5
indices = np.argsort(subarray) # Returns array([1,2,0,3])
result = a[indices]
または、すべて: - このことのNotherの方法、必要なデータのビットをスライスargsortを使用してソートインデックスを取得するには、その後、あなたの元の配列をスライスすることの結果を使用し
a[np.argsort(a[:,1])]
あなたが(例えば、第二カラム)、あなたのような何かを行うことができる唯一の単一の列を使用してソートしたい場合:
from operator import itemgetter
a = [[0, 3], [5, 1], [2, 1], [4, 5]]
a_sorted = sorted(a, key=itemgetter(1))
複数のキーがある場合は、numpy.lexsortを使用します() thで指摘されているように他の答え。
私の場合、numpy.array(sorted(a、key = itemgetter(1)))は最も読みやすいオプションです。 – firegurafiku
こんにちは、ソリューションのおかげで。 x [:、0]をx [:: - 1,0]に置き換えると、(最初の列の)2番目のソートの方向を逆にすることができるので、これは最高です。多くの皆さん、ありがとう! – Derek