This question already has answers here:
Replace diagonals of a 2D array with python [duplicate]
(2个答案)
在8个月前关闭。
我想将某些
例如,如果:
然后:
我可以从
如何在
注意:这不是this question的重复项,因为他们想将对角线设置为常数。
要么
(2个答案)
在8个月前关闭。
我想将某些
numpy
矩阵的对角线设置为任意一维数组。例如,如果:
mat = np.array([[1,2],[3,4]])
diag = np.array([5,6])
然后:
>>> set_diagonal(mat, diag)
>>> mat
... array([[5,2],
[3,6]])
我可以从
diag
变量创建对角矩阵,将diag_fill
的mat
矩阵创建为0
并添加结果。但是,如果我尝试更改对角线,这似乎会使用大量不必要的资源。如何在
numpy
中设置矩阵的对角线?注意:这不是this question的重复项,因为他们想将对角线设置为常数。
最佳答案
您正在寻找numpy.fill_diagonal
根据文档:
numpy.fill_diagonal(a,val,wrap = False)。
填充任意维度的给定数组的主对角线。
import numpy as np
mat = np.array([[1,2],[3,4]])
np.fill_diagonal(mat, [5,6])
print(mat)
#[[5 2]
# [3 6]]
要么
import numpy as np
mat = np.array([[1,2],[3,4]])
diag = np.array([5,6])
np.fill_diagonal(mat, diag)
print(mat)
#[[5 2]
# [3 6]]
关于python - 如何在numpy中更改矩阵对角线的值? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55940915/
10-12 21:54