nの長さのリストがあります:
labels = ['a', 'b', 'c', 'd']
次のようなm * nのサイズの配列:
values = array([[0. , 0.6, 0.3, 0.1],
[0.5, 0.1, 0.1, 0.3],
[0.1, 0.2, 0.3, 0.4]])
値の各行でラベルを並べ替え、次のような新しいm * n配列を生成したいと思います。
labels_new = [['a', 'd', 'c', 'b'],
['b', 'c', 'd', 'a'],
['a', 'b', 'c', 'd']]
これを達成する簡単な方法はありますか?
argsort
関数を使用できます。ラベルを保持するためにnumpy配列を使用してから、単純なインデックスを作成するだけです。
In [6]: labels = np.array(['a', 'b', 'c', 'd'])
In [7]: labels[np.argsort(values)]
Out[7]:
array([['a', 'd', 'c', 'b'],
['b', 'c', 'd', 'a'],
['a', 'b', 'c', 'd']], dtype='<U1')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加