从分布的scipy数组中“检索”分布

2024-10-04 09:24:01 发布

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

我使用scipy和numpy在python中工作。假设我想用几个Beta发行版做一些事情。我特别想学习Beta(1,4),Beta(2,5)和Beta(3,6)。我可以定义priorArray,它是一个scipy分布对象,我可以从中绘制值数组

from scipy.stats import beta
import numpy as np

priorArray = beta((1,2,3),(4,5,6))

z = priorArray.pdf(0.3)
print type(z)

这似乎和预期的一样有效。但是,如果我想从这个分布数组中提取一个组件分布(例如Beta(2,4)):

priorArray[1]

这会导致一个错误:

TypeError: 'rv_frozen' object does not support indexing

因此priorArray不是我可以索引的对象类型,尽管对象的许多方法都会按预期返回值数组

所以我的问题是:有没有办法从分布数组中提取分布


Tags: 对象fromimportnumpy定义asstatsnp
1条回答
网友
1楼 · 发布于 2024-10-04 09:24:01

可以使用args属性恢复传递给beta的值:

In [10]: priorArray = beta((1, 2, 3), (4, 5, 6))                                

In [11]: priorArray.args                                                        
Out[11]: ((1, 2, 3), (4, 5, 6))

In [12]: [p[1] for p in priorArray.args]                                        
Out[12]: [2, 5]

要迭代参数对,可以执行以下操作:

In [14]: for a, b in zip(*priorArray.args): 
    ...:     print(a, b) 
    ...:                                                                        
1 4
2 5
3 6

相关问题 更多 >