给定一个 3 行 3 列的 numpy 数组
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
一定有更好的方法,不是吗?
或许需要澄清一下:我所说的规范化是指每行条目之和必须为1。但我想大多数人都会明白。
L2
范数并认为它是最常见的(这可能是正确的),而 Aufwind 使用的是L1
范数,它也确实是一种范数。 - Bálint Sass