gpt4 book ai didi

python - 如何将正态分布与 numpy 和 scipy 集成?

转载 作者:行者123 更新时间:2023-12-03 08:26:31 25 4
gpt4 key购买 nike

尝试整合正态分布

import numpy as np
import scipy

这不起作用,会引发类型错误:

def f_np(x):
return np.random.normal(size=x)

integrate.quad(f_manual, -np.inf, np.inf)

mtrand.pyx in numpy.random.mtrand.RandomState.normal()

_common.pyx in numpy.random._common.cont()

TypeError: 'float' object cannot be interpreted as an integer

但如果我手动输入 pdf 就可以了:

def f_manual(x):
return 1/(1 * np.sqrt(2 * np.pi)) * np.exp(-(x - 0)**2 / (2 * 1**2) )

integrate.quad(f_manual, -np.inf, np.inf)

(0.9999999999999997, 1.017819145094224e-08)

知道为什么吗?

最佳答案

这里发生了几件事。

np.random.normal 从正态分布中抽取样本。 size 参数指定您想要的样本数量。如果指定 10,您将得到一个包含 10 个样本的数组。如果您指定一个元组,例如 (4, 5),您将获得一个 4x5 数组。此外,np.inf 是一个 float ,np.random.normal 需要一个整数或整数元组作为大小参数。

f_manual 中的内容是一个确定性函数(即 PDF),它返回值 x 处的 PDF 值。

这是两个不同的事情。

scipy 有一个返回高斯 PDF 的函数:scipy.stats.norm.pdf

import scipy.stats
scipy.integrate.quad(scipy.stats.norm.pdf, -np.inf, np.inf)
# (0.9999999999999998, 1.0178191320905743e-08)

scipy 还有一个 CDF 函数,它返回从 -inf 到 x 的积分:

scipy.stats.norm.cdf(np.inf)
# 1.0

scipy.stats.norm.cdf(0)
# 0.5

关于python - 如何将正态分布与 numpy 和 scipy 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66502401/

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