gpt4 book ai didi

python - python中的概率函数卷积

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:46 25 4
gpt4 key购买 nike

有 N 个分布具有整数值 0,... 以及相关的概率。此外,我假设有 3 个变量 [value, prob]:

import numpy as np
x = np.array([ [0,0.3],[1,0.2],[3,0.5] ])
y = np.array([ [10,0.2],[11,0.4],[13,0.1],[14,0.3] ])
z = np.array([ [21,0.3],[23,0.7] ])

因为有 N 个变量,所以我首先对 x+y 进行卷积,然后添加 z,依此类推。不幸的是 numpy.convole() 将一维数组作为输入变量,因此它不适合直接用于这种情况。我使用变量来获取所有值 0,1,2,...,23(如果不知道值则 Pr=0)...我觉得还有另一个更好的解决方案。

有没有人有提高效率的建议?提前致谢。

最佳答案

我在 Scipy 中没有看到内置的方法;有一种方法可以定义自定义离散随机变量,但这些变量不支持加法。这是一种使用 pandas 的方法,假设 import pandas as pdx,y,z 如您的示例所示:

values = np.add.outer(x[:,0], y[:,0]).flatten()
probs = np.multiply.outer(x[:,1], y[:,1]).flatten()
df = pd.DataFrame({'values': values, 'probs': probs})
conv = df.groupby('values').sum()
result = conv.reset_index().values

输出是

array([[ 10.  ,   0.06],
[ 11. , 0.16],
[ 12. , 0.08],
[ 13. , 0.13],
[ 14. , 0.31],
[ 15. , 0.06],
[ 16. , 0.05],
[ 17. , 0.15]])

如果有两个以上的变量,您不必在 numpy 和 pandas 之间来回切换:可以在开头包含额外的变量。

values = np.add.outer(np.add.outer(x[:,0], y[:,0]), z[:,0]).flatten()
probs = np.multiply.outer(np.multiply.outer(x[:,1], y[:,1]), z[:,1]).flatten()

另外:如果值和概率具有不同的固有数据类型(整数与实数),最好将值和概率保存在单独的 numpy 数组中。

关于python - python中的概率函数卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41139104/

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