如何使用scipy.stats.离散。期望计算离散期望值?

2024-10-09 20:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我是新手。这可能是个新手的问题。我不知道如何使用scipy.discrete.expect来计算以下函数,给定离散输入:1,2,3

m = lambda k: (0.12*np.sin((2*np.pi*k)/3 + np.pi/2))**2
k = 1,2,3

现在,在我知道如何使用标准函数之前,我自己编写了一个小函数。在

^{pr2}$

谢谢你的帮助!在


Tags: lambda函数标准nppiscipysinexpect
2条回答

在这种情况下,不需要for循环:

import numpy as np
m = lambda k: (0.12*np.sin((2*np.pi*k)/3 + np.pi/2))**2
k=np.arange(1,4) # k = array([1, 2, 3])
print (m(k))
# array([ 0.0036,  0.0036,  0.0144])
print (np.mean(m(k)))
# 0.0072

如果要使用scipy.stats.rv_discrete,请确保m(k)是概率,即它们加起来等于1。在

^{pr2}$

如果您坚持使用rv_discrete,并且所有{}的概率相同,则可以使用:

from scipy import stats
pk = np.ones_like(m(k))/len(m(k))
func = stats.rv_discrete(name='custm', values=(m(k), pk))
func.mean()
# 0.0072

在您的例子中,您可以使用^{}(low=1, high=4).expect(m)

对于带有字母表k的任意一致多项式,可以使用

uniform_dist = scipy.stats.rv_discrete(values=(k, np.ones(k)/len(k)))
result = uniform_dist.expect(m)

相关问题 更多 >

    热门问题