Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用两个位置的步长生成下三角矩阵_Python_Matrix_Triangular - Fatal编程技术网

Python 如何用两个位置的步长生成下三角矩阵

Python 如何用两个位置的步长生成下三角矩阵,python,matrix,triangular,Python,Matrix,Triangular,我有一个矩阵,看起来像: x=[[a,b,c,d,e,f], [g,h,i,j,k,l], [m,n,o,p,q,r]] 用a,b,c数字。然而,我只对左下半部分的数字感兴趣,并希望创建一个下三角矩阵,该矩阵按两个位置逐步进行,因此如下所示: x2=[[a,b,0,0,0,0], [g,h,i,j,0,0], [m,n,o,p,q,r]] x3=[[1,1,1,1,1,1], [1,1,1,1,1,1], [1,1,1,1,1,1]] for

我有一个矩阵,看起来像:

x=[[a,b,c,d,e,f],
   [g,h,i,j,k,l],
   [m,n,o,p,q,r]]
用a,b,c数字。然而,我只对左下半部分的数字感兴趣,并希望创建一个下三角矩阵,该矩阵按两个位置逐步进行,因此如下所示:

x2=[[a,b,0,0,0,0],
    [g,h,i,j,0,0],
    [m,n,o,p,q,r]]
x3=[[1,1,1,1,1,1],
    [1,1,1,1,1,1],
    [1,1,1,1,1,1]]


for i in range(len(x3)):
    step = (i+1) * 2
    for j in range(step, len(x3[i])):
        x3[i][j] = 0

for i in x3:
    print(i)
我当然可以用x乘以:

x3=[[1,1,0,0,0,0],
    [1,1,1,1,0,0],
    [1,1,1,1,1,1]]
但是有没有一种不用手动创建x3就能做到这一点的方法


有没有可能创建一个脚本,其中步长一次大于2个零?

以您在示例中提供的示例矩阵
x3
为例,您可以这样做:

x2=[[a,b,0,0,0,0],
    [g,h,i,j,0,0],
    [m,n,o,p,q,r]]
x3=[[1,1,1,1,1,1],
    [1,1,1,1,1,1],
    [1,1,1,1,1,1]]


for i in range(len(x3)):
    step = (i+1) * 2
    for j in range(step, len(x3[i])):
        x3[i][j] = 0

for i in x3:
    print(i)
输出:

[1, 1, 0, 0, 0, 0]
[1, 1, 1, 1, 0, 0]
[1, 1, 1, 1, 1, 1]
或者,如果您更喜欢单衬里:

x3 = [[0 if j>(i+1)*2 else x3[i][j] for j in range(0, len(x3[i]))] for i in range(len(x3))]

使用
numpy
或香草Python?我更喜欢numpy,但任何答案都非常感谢!