2016-05-20 3 views
1

У меня есть матрица значений, например:Список постижение нормализовать значения в матрице

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]

но разрушается все это в один список.

ответ

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]] 
+2

IMO Важно отметить здесь, что вы хотите, чтобы результат был матрицей (или списком списков), и, следовательно, вам понадобилось понимание вложенного списка. – turbulencetoo

+0

@turbulencetoo, что означает 'ИМО'? – SparkAndShine

+1

'В моем мнении' – turbulencetoo

Смежные вопросы