[英]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.