繁体   English   中英

按最小值对numpy矩阵排序,并在矩阵的对角线上显示最小值

[英]Sort the numpy matrix by the minimum values and display minimum values on the diagonal of matrix

无论其他元素如何放置,仅沿对角线的值很重要。

例如我有矩阵:

matrix = [[1, 3, 2],
          [2, 5, -9],
          [3, 4, 6]]

我要实现的目标与以下目标相同:

[[-9, 3, 2],
 [6, 1, 5],
 [3, 4, 2]]

我努力了:

>>> np_matrix = np.array(matrix)
>>> np_matrix.diagonal()
array([1, 5, 6])

>>> np.sort(np_matrix)
array([[ 1,  2,  3],
       [-9,  2,  5],
       [ 3,  4,  6]])

我认为我可以从这些方法中得到一些好处,但是我不知道如何使它们协同工作。 我感谢我能获得的所有帮助。

我不太确定你想要什么。 但也许像

sorted = np.sort(matrix, axis=None) #sorts flattened matrix

现在,您已经调整了形状,然后在第一行中更改对角线元素:

sorted.shape = matrix.shape
for i in xrange(1, matrix.shape[0]):  # first element already in order
     sorted[0, i], sorted[i, i] = sorted[i, i], sorted[0, i]

但老实说,我首先会问这是否真的是您想要的。 这对我来说似乎并不是真的有用。 获得具有最小元素的数组是否足够?

diag_lowest = np.sort(matrix, axis=None)[:matrix.shape[0]]

并保持矩阵不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM