Как нормализовать двумерный массив numpy в python менее многословно?

Дан массив numpy 3 раза 3

a = numpy.arange(0,27,3).reshape(3,3)

# array([[ 0,  3,  6],
#        [ 9, 12, 15],
#        [18, 21, 24]])

Чтобы нормализовать строки двумерного массива, я подумал

row_sums = a.sum(axis=1) # array([ 9, 36, 63])
new_matrix = numpy.zeros((3,3))
for i, (row, row_sum) in enumerate(zip(a, row_sums)):
    new_matrix[i,:] = row / row_sum

Должен быть лучший способ, не так ли?

Возможно, чтобы прояснить: под нормализацией я подразумеваю, что сумма записей в строке должна быть равна единице. Но я думаю, что это будет понятно большинству людей.

81
задан Aufwind 18 January 2012 в 03:18
поделиться