2016-04-27 8 views
2

行のノルムで行列を効率的にソートする方法(numpy.ndarraysを使用)?numpy 2D配列を関数ごとにソート(対称)します。 (ノルム)

は、私は、行列Aをソートしたい:

A = np.array(([ 10, 1, 6, 3 ], 
       [ 1,12, 2, 4 ], 
       [ 6, 2,14, 5 ], 
       [ 3, 4, 5, 9 ])) 

その行のノルムで。

ここでは、ノルムのリストを作成し、そのリストのインデックスリストを取得し、そのインデックスリストに基づいてマトリックスをソートすることです。これは道のりですか?

indexlist = np.argsort(np.apply_along_axis(np.linalg.norm, 0, A)) 
#indexlist = array([3, 0, 1, 2]) 

次にソートされたリスト。

sortedA = A[indexlist] 

と対称でソートされたリストは、

sym_sortedA = A[indexlist][:,indexlist] 

答えて

2

はい、これはそれを行うための最も一般的な方法があるだろう。ちょっと短い

indexlist = np.argsort(np.linalg.norm(A,axis=1)) 

を使用することですあなたが行でソートしたい場合は軸= 1を使用する必要がありますが、行列は関係ありません対称であることから。

関連する問題