«извлечение» дистрибутива из массива scipy - PullRequest
0 голосов
/ 09 января 2020

Я работаю в python, используя scipy и numpy. Допустим, я хочу сделать кое-что с парой бета-версий. В частности, я хочу изучать бета (1,4), бета (2,5) и бета (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 - это не тот тип объекта, который я могу индексировать, хотя многие методы для объекта возвращают массивы значений, как и ожидалось.

Поэтому мой вопрос: существует ли способ извлечь распределение из массива раздач?

1 Ответ

1 голос
/ 09 января 2020

Вы можете восстановить значения, которые вы передали beta с помощью атрибута args:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...