首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从大量分布中“检索”分布

从大量分布中“检索”分布
EN

Stack Overflow用户
提问于 2020-01-09 22:59:31
回答 1查看 238关注 0票数 0

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

代码语言:javascript
运行
复制
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)):

代码语言:javascript
运行
复制
priorArray[1]

这会导致一个错误:

代码语言:javascript
运行
复制
TypeError: 'rv_frozen' object does not support indexing

所以priorArray不是我可以索引的对象类型,即使对象的许多方法如预期的那样返回数组值。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 23:48:44

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

代码语言:javascript
运行
复制
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]

要遍历成对的参数,您可以这样做:

代码语言:javascript
运行
复制
In [14]: for a, b in zip(*priorArray.args): 
    ...:     print(a, b) 
    ...:                                                                        
1 4
2 5
3 6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59666710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档