如何从scipy ttest_1samp解压缩结果?

时间:2016-04-17 18:03:05

标签: python scipy tuples iterable-unpacking

Scipy的ttest_1samp返回一个元组,带有t统计量和双尾p值。

示例:

ttest_1samp([0,1,2], 0) = (array(1.7320508075688774), 0.22540333075851657)

但我只对t-test(t-statistic)的浮动感兴趣,我只能通过使用[0].ravel()[0]来获得

示例:

ttest_1samp([0,1,2], 0)[0].ravel()[0] = 1.732

但是,我非常肯定必须有更多的pythonic方式来做到这一点。 从此输出中获取浮动的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

the source code开始,scipy.stats.ttest_1samp只会返回带有统计值和p值的namedtuple Ttest_1sampResult。因此,您不需要使用.ravel - 您只需使用

即可
scipy.stats.ttest_1samp([0,1,2], 0)[0]

访问统计信息。

注意:  从进一步查看源代码,很明显这个命名元组只在0.14.0版本中开始返回。在0.13.0及更早版本中,似乎a zero dim array is returned源代码),对于所有意图和目的而言,其行为就像BrenBarn所提到的普通数字一样。

答案 1 :(得分:2)

要详细说明@miradulo的答案,如果您使用较新版本的scipy(0.14.0或更高版本),则可以引用返回的namedtuplestatistic字段。这种引用是Pythonic的,并且因为不需要记住特定的索引而简化了代码。

代码 res = ttest_1samp(range(3), 0) print(res.statistic) print(res.pvalue)

输出 1.73205080757 0.225403330759

答案 2 :(得分:0)

您可以通过以下方式获得所需格式的结果:

print ("The t-statistic is %.3f and the p-value is %.3f." % stats.ttest_1samp([0,1,2], 0))

输出:

  

t统计值为1.732,p值为0.225。