在没有numpy的情况下改变对角线的方阵 - Python

时间:2018-04-21 18:36:19

标签: python arrays python-3.x list matrix

我有一些数据:

values = [2.1254,0.0125,1.3542,0.2543]
residuals = [0.0251,0.0005,0.1223,0.0043]

然后我创建了一个矩阵:

matrix = [[i] * len(values) for i in values]

现在我想将残差向量加到矩阵中的对角线上。 我试过了:

def fc(x)
    for i in range(len(values)):
        x[i][i] + residuals[i]

但我不知道如何返回结果。

print(fc(matrix))

返回None

这是理想的矩阵:

matrix1 = [[2.1505,2.1254,2.1254,2.1254],
[0.0125,0.013,0.0125,0.0125,
[1.3542,1.3542,1.4765,1.3542]
[0.2543,0.2543,0.2543,0.2586]]

1 个答案:

答案 0 :(得分:1)

这是使用列表推导和enumerate的一种方式:

values = [2.1254,0.0125,1.3542,0.2543]
residuals = [0.0251,0.0005,0.1223,0.0043]

def fc(values, residuals):
    n = len(values)
    res = [[i]*n for i in values]
    for idx, j in enumerate(residuals):
        res[idx][idx] += j
    return res

res = fc(values, residuals)

结果:

[[2.1505, 2.1254, 2.1254, 2.1254],
 [0.0125, 0.013, 0.0125, 0.0125],
 [1.3542, 1.3542, 1.4765, 1.3542],
 [0.2543, 0.2543, 0.2543, 0.2586]]