无论其他元素如何定位,重要的只是沿对角线的值。
例如我有矩阵:
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]])
我认为我可以从这些方法中获得一些东西,但我无法弄清楚如何让它们协同工作。我很感激能得到的所有帮助。
答案 0 :(得分:1)
我不确定你想要什么。但也许像是
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]]
并保持矩阵原样。