在 Python 中为给定的 k 替换矩阵的所有子对角线

问题描述

我想替换 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 = 1 的 k 对角线下的对角线,例如:

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]]

而且,我被困在那里,我应该添加什么才能使 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]]

感谢您的帮助和耐心。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)