基于numbybased groupby的向量化分布拟合

2024-04-25 00:37:18 发布

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

我正试图找到一个类似于广播答案的解决方案,如here所述,这对sum非常有效:

import numpy as np

n = 10000
observations = np.random.uniform(low=5, high=7, size=n).reshape(-1, 1)
groups = np.random.randint(low=1, high=10, size=n)
d = np.bincount(groups, observations.sum(axis=1), 10)

如何调整此示例以使用来自scipy.stats.norm的拟合?它不具有轴参数

所以我希望10组中的每一组都有mu和std,如下所示:

import numpy as np
from scipy.stats import norm

n = 10000
observations = np.random.uniform(low=5, high=7, size=n)
groups = np.random.randint(low=1, high=10, size=n)
data = np.array([groups, observations]).T
df = np.array([norm.fit(data[data[:,0]==i,1]) for i in np.unique(data[:,0])])
mu = df[:, 0]
std = df[:, 1]
print(mu, std)
# [6.00968012 5.97677677 5.99516999 5.99329037 6.01787526 5.98163756 6.01775866 6.01331319 5.97938708]
# [0.57232071 0.57108535 0.57457272 0.569295   0.57263456 0.58611009 0.57446768 0.58279465 0.5719683 ]

Tags: importnumpynormdfdatasizenprandom