我有一个值矩阵,例如:
matrix = [
[1,2,3],
[5,6,7]
]
我想将它们标准化,以便每行合计为一。使用类似的方法非常简单:
result = []
for x in matrix:
curr_row = [z/sum(x) for z in x]
result.append(curr_row)
我想知道是否可以通过列表理解来实现这一目标。
我最接近的是
result = [x/sum(y) for y in matrix for x in y]
但是这会把它全部折叠成一个列表。
答案 0 :(得分:2)
你快到了。
from __future__ import division # for Python2
results = [[item/sum(row) for item in row] for row in matrix] # a list of lists
print(results)
# Output
[[0.16666666666666666, 0.3333333333333333, 0.5], [0.2777777777777778, 0.3333333333333333, 0.3888888888888889]]