列表理解以规范化矩阵中的值

时间:2016-05-20 16:58:14

标签: python list-comprehension

我有一个值矩阵,例如:

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]

但是这会把它全部折叠成一个列表。

1 个答案:

答案 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]]