列を保持した行で行列を並べ替え(昇順)したいと思います。たとえば、次のマトリックスがあります。
my_scores = [
['1', 0.03, 0.4, 0.6, 0.01, 0.1],
['2', 0.02, 0.5, 0.7, 0.01, 0.1],
['3', 0.01, 0.5, 0.7, 0.02, 0.3],
['4', 0.01, 0.5, 0.7, 0.03, 0.4],
['5', 0.03, 0.1, 0.2, 0.03, 0.4],
]
列1(インデックス0)は並べ替えではなく、要素の名前を示す単なる情報列です。私はこのベクトル[1,2,3,4,5]を持っています。これは、最初に(インデックス1の)列2でソートし、次に列3でソートする必要があることを示しています。
したがって、私の行列ソート関数は次のように出力します。
[
['1', 0.03, 0.4, 0.6, 0.01, 0.1],
['5', 0.03, 0.1, 0.2, 0.03, 0.4],
['2', 0.02, 0.5, 0.7, 0.01, 0.1],
['4', 0.01, 0.5, 0.7, 0.03, 0.4],
['3', 0.01, 0.5, 0.7, 0.02, 0.3]]
たとえば、列2のすべての値が異なる場合は、列2で並べ替える必要がありましたが、1と5の要素と4と3の要素で同じ値であるため、列3、次に列4で並べ替える必要がありました。 、次に列4、最後に列5..。