如何用两个位置的步骤制作下三角矩阵
How to make a lower triangular matrix with steps of two positions
我有一个如下所示的矩阵:
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]]
我当然可以将 x 乘以:
x3=[[1,1,0,0,0,0],
[1,1,1,1,0,0],
[1,1,1,1,1,1]]
但是有没有办法在不手动创建 x3 的情况下做到这一点?
是否可以创建一个脚本,其中的步长一次大于 2 个零?
使用您在示例中提供的示例矩阵 x3
,您可以执行如下操作:
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]
或者如果您更喜欢 one-liner:
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))]
我有一个如下所示的矩阵:
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]]
我当然可以将 x 乘以:
x3=[[1,1,0,0,0,0],
[1,1,1,1,0,0],
[1,1,1,1,1,1]]
但是有没有办法在不手动创建 x3 的情况下做到这一点?
是否可以创建一个脚本,其中的步长一次大于 2 个零?
使用您在示例中提供的示例矩阵 x3
,您可以执行如下操作:
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]
或者如果您更喜欢 one-liner:
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))]