小编典典

python-如何在python中更详细地规范二维numpy数组?

python

给定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。但是我认为这对于大多数人来说都是显而易见的。


阅读 180

收藏
2020-12-20

共1个答案

小编典典

广播确实对此有好处:

row_sums = a.sum(axis=1)
new_matrix = a / row_sums[:, numpy.newaxis]

row_sums[:, numpy.newaxis]重塑row_sums从存在(3,)到存在(3, 1)。当你这样做a / bab会相互播出。

您可以
在此处

了解更多有关 广播的
信息
,甚至可以
在此处

了解更多。

2020-12-20