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

如何让Scipy stats median_test返回对象而非元组?

解决scipy.median_test返回元组而非带标签对象的问题

问题原因

你遇到的差异是因为Scipy版本差异:Scipy 1.7.0及以上版本中,median_test返回MedianTestResult对象(支持.statistic、.median、.pvalue等属性访问);而1.7.0之前的旧版本仅返回无标签元组。

元组元素对应关系(旧版本)

旧版本返回的元组元素顺序固定为:

  • 索引0:检验统计量(statistic)
  • 索引1:p值(pvalue)
  • 索引2:合并样本的中位数(median)
  • 索引3:列联表(contingency table)

所以你要获取中位数的话,旧版本可以直接写:

res1 = median_test(HCVs, genpops, nan_policy='omit')
print(res1[2])  # 输出中位数

获取带标签对象的两种方法

  1. 升级Scipy版本
    执行命令升级到最新稳定版:

    pip install --upgrade scipy
    

    升级后即可直接用.median、.pvalue等属性访问结果,和官方文档一致。

  2. 手动封装元组为命名元组(不升级版本的兼容方案)
    如果无法升级版本,可以用collections.namedtuple把元组转换成类似对象的结构,模拟属性访问:

    from collections import namedtuple
    from scipy.stats import median_test
    
    # 定义命名元组,匹配旧版本元组的元素顺序
    MedianTestResult = namedtuple('MedianTestResult', ['statistic', 'pvalue', 'median', 'table'])
    
    res1 = MedianTestResult(*median_test(HCVs, genpops, nan_policy='omit'))
    print(res1.median)  # 现在可以用属性访问中位数
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:46:02