gpt4 book ai didi

python - 如何使 numpy 数组列总和为 1

转载 作者:太空狗 更新时间:2023-10-29 22:14:59 25 4
gpt4 key购买 nike

我正在构建用于实现 PageRank 算法的转换矩阵。我如何使用 numpy 来确保列相加为一。

例如:

1 1 1   
1 1 1
1 1 1

应该归一化为

.33 .33 .33  
.33 .33 .33
.33 .33 .33

最佳答案

将每列的元素除以它们的列总和 -

a/a.sum(axis=0,keepdims=1) # or simply : a/a.sum(0)

为了使行求和统一,改变轴输入-

a/a.sum(axis=1,keepdims=1)

sample 运行-

In [78]: a = np.random.rand(4,5)

In [79]: a
Out[79]:
array([[ 0.37, 0.74, 0.36, 0.41, 0.44],
[ 0.51, 0.86, 0.91, 0.03, 0.76],
[ 0.56, 0.46, 0.01, 0.86, 0.38],
[ 0.72, 0.66, 0.56, 0.84, 0.69]])

In [80]: b = a/a.sum(axis=0,keepdims=1)

In [81]: b.sum(0) # Verify
Out[81]: array([ 1., 1., 1., 1., 1.])

要确保它在 int 数组上也适用于 Python 2.x,请使用 from __future__ import division 或使用 np.true_divide .


对于加起来为 0

的列

对于加起来为 0 的列,假设我们可以将它们保持原样,我们可以将总和设置为 1,而不是除以 0,像这样 -

sums = a.sum(axis=0,keepdims=1); 
sums[sums==0] = 1
out = a/sums

关于python - 如何使 numpy 数组列总和为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com