You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环中如何通过字符串变量调用scipy.stats对应分布的fit方法?

解决scipy.stats分布名称字符串调用问题

你可以通过两种常用方法实现将循环中的字符串名称映射到scipy.stats对应的分布类:

方法一:使用getattr()函数

getattr()可以直接从模块或对象中获取指定名称的属性,刚好适配你的需求:

import scipy.stats

dist_names = ['Lognorm','Weibull']

for i in dist_names:
    # 从scipy.stats模块中获取对应名称的分布类
    dist_class = getattr(scipy.stats, i)
    param = dist_class.fit(data)
    # 后续可根据需求处理param,比如打印、存储等

这个方法无需额外维护映射关系,直接通过字符串匹配模块内的分布名称,适合快速实现。

方法二:构建分布映射字典

如果需要更清晰的映射逻辑,或是担心字符串拼写错误引发问题,可以提前定义字典,将字符串与对应分布类一一绑定:

import scipy.stats

dist_map = {
    'Lognorm': scipy.stats.Lognorm,
    'Weibull': scipy.stats.Weibull
}

dist_names = ['Lognorm','Weibull']

for name in dist_names:
    param = dist_map[name].fit(data)

这种方式更直观,一旦dist_names中出现字典未定义的字符串,会直接抛出KeyError,方便快速排查错误。

注意事项

  • Python对大小写敏感,要确保dist_names里的字符串和scipy.stats中的分布名称完全匹配(比如Lognorm不能写成lognorm)。
  • 确认使用的scipy版本包含目标分布类,避免因版本差异导致属性不存在的问题。

内容的提问来源于stack exchange,提问作者Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:27:47