Reputation: 33
I have some data:
values = [2.1254,0.0125,1.3542,0.2543]
residuals = [0.0251,0.0005,0.1223,0.0043]
then I created a matrix:
matrix = [[i] * len(values) for i in values]
and now I would like to add up the residuals vector to diagonal in matrix. I tried:
def fc(x)
for i in range(len(values)):
x[i][i] + residuals[i]
but I do not know how to return a result.
print(fc(matrix))
returns None
This is desired matrix:
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]]
Upvotes: 2
Views: 331
Reputation: 164703
This is one way using a list comprehension and 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)
Result:
[[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]]
Upvotes: 1