我使用scipy.stats.norm包来计算CDF和ICDF。我想传递loc和scale参数作为numpy数组,并希望得到相同数量的x值的结果。norm.cdf函数返回了良好的结果(见下文):
>>> norm.cdf([0.1, 0.2, 0.3], loc = [2, 3, 4], scale = [0, 1, 2])
array([ NaN, 0.00255513, 0.03215677])
而norm.ppf函数查找ICDF时出错:
>>> norm.ppf([0.1, 0.2, 0.3], loc = [2, 3, 4], scale = [0, 1, 2])
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
norm.ppf([0.1, 0.2, 0.3], loc = [2, 3, 4], scale = [0, 1, 2])
File "C:\Python\lib\site-packages\scipy\stats\distributions.py", line 718, in ppf
output = valarray(shape(cond),value=self.a*scale + loc)
File "C:\Python\lib\site-packages\scipy\stats\distributions.py", line 235, in valarray
out = reshape(repeat([value],product(shape,axis=0),axis=0),shape)
File "C:\Python\lib\site-packages\numpy\core\fromnumeric.py", line 152, in reshape
return reshape(newshape, order=order)
ValueError: total size of new array must be unchanged
我不想循环多次,因为我的loc,scale和x值的数量很大。你能帮我用numpy vectorization解决这个问题吗?非常感谢:)
1条答案
按热度按时间gpfsuwkq1#
我不知道你是什么建模与零方差,但你没有得到“好结果”的任何设置。只是其中一个触发的错误信息比另一个更无礼。他们都给你错误消息的原因是因为你的零方差。这不是关于Python的一个版本不能正常工作。这是关于统计数据。试试这个:
同方差应用:考虑用正态分布拟合的速度测量值的阵列l_speed。该示例导致Q-Q图,以测试测量误差与正态分布的拟合程度。