我想将一些 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) .
Fill the main diagonal of the given array of any dimensionality.
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]]