【发布时间】:2012-02-12 20:25:47
【问题描述】:
给定一个 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。但我认为大多数人都清楚这一点。
【问题讨论】:
-
小心,“归一化”通常意味着 平方 分量的和为 1。大多数人都很难清楚你的定义;)
-
@coldfix 谈到
L2norm 并认为它是最常见的(这可能是真的),而 Aufwind 使用L1norm 这也是一个规范。
标签: python arrays syntax numpy normalization