如何用scipy.stats.gamma.fit求伽马分布参数?二维数组报错求解
解决gamma.fit()处理二维数组报错的问题
你遇到的问题是scipy.stats.gamma.fit()仅支持一维输入数组,传入二维数组时会触发歧义性真值判断错误,错误信息翻译为:
ValueError: 包含多个元素的数组的真值是不明确的。请使用a.any()或a.all()
具体解决方法:
- 展平数组拟合整体参数:如果需要将所有二维数据作为一个整体拟合伽马分布参数,只需把二维数组展平为一维:
from scipy.stats import gamma a = 5 loc = 100.5 b = 22 data = gamma.rvs(a, loc=loc, scale=b, size=(100,100)) # 使用flatten()展平数组 res = gamma.fit(data.flatten()) print(res) # 输出拟合得到的形状、位置、尺度参数
- 逐行/列拟合独立参数:如果需要对二维数组的每一行(或每一列)分别拟合参数,可通过循环实现:
import numpy as np from scipy.stats import gamma a = 5 loc = 100.5 b = 22 data = gamma.rvs(a, loc=loc, scale=b, size=(100,100)) # 遍历每一行,分别拟合参数 row_params = np.array([gamma.fit(row) for row in data]) # row_params为(100, 3)的数组,每行对应一组形状、位置、尺度参数 print(row_params.shape)
内容的提问来源于stack exchange,提问作者DHS
相关产品推荐
相关产品推荐

