1

我有一个看起来像这样的矩阵:

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 个零?

4

1 回答 1

1

以您在示例中提供的示例矩阵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]

或者,如果您更喜欢单线:

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))]
于 2018-03-11T18:58:23.803 回答