按功能排序(对称)numpy 2D数组。 (范数)

时间:2016-04-27 09:16:41

标签: arrays sorting numpy norm

如何有效地使用行的范数对矩阵进行排序(使用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]

1 个答案:

答案 0 :(得分:3)

是的,这是最常用的方法。稍微短一些就是使用

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

如果要按行排序,则需要使用axis = 1,但由于矩阵是对称的并不重要。