【发布时间】:2021-06-10 21:55:12
【问题描述】:
我想替换 k 对角线下所有对角线的值。
例如:
我们首先导入 numpy 库:
import numpy as np
然后我们创建矩阵:
In [14]: matrix = np.matrix('1 1 1 1 1 1; 1 1 1 1 1 1; 1 1 1 1 1 1; 1 1 1 1 1 1; 1 1 1 1 1 1')
然后我们得到:
In [15]: print(matrix)
Out[16]:
[[1 1 1 1 1 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]]
然后我们得到 k 对角线下的对角线,例如 k = 1:
In [17]: lowerdiags = [np.diag(matrix, k=e+1).tolist() for e in range(-len(matrix), k)]
In [18]: print(lowerdiags)
Out[19]: [[1], [1, 1], [1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
而且,我被困在那里,我应该为 k = 1 添加什么并替换每个 0 的所有值,就像这样:(知道我们刚刚找到了对角线)
[[0 1 1 1 1 1]
[0 0 1 1 1 1]
[0 0 0 1 1 1]
[0 0 0 0 1 1]
[0 0 0 0 0 1]]
甚至对于 k = 0 :
[[1 1 1 1 1 1]
[0 1 1 1 1 1]
[0 0 1 1 1 1]
[0 0 0 1 1 1]
[0 0 0 0 1 1]]
感谢您的帮助和耐心。
【问题讨论】:
标签: python arrays list matrix diagonal