如何有效地按行的范数对矩阵进行排序(使用 numpy.ndarrays)?
我想对矩阵 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]
是的,这是最常见的方法。更短一点是使用
indexlist = np.argsort(np.linalg.norm(A,axis=1))
如果要按行排序,则需要使用 axis=1,但由于矩阵是对称的,这无关紧要。