我尝试将mstats.kruskalwallis与存储在'array'中的某些数据组一起使用,我尝试将它们放入一个列表中,但是我发现mstats.kruskalwallis如果列表中的数据包含不同的长度。

例如

from scipy.stats import mstats
import numpy as np

a1=np.random.randn(10)
a2=np.random.randn(10)
a3=a1,a2
print(mstats.kruskalwallis(a1,a2))
print(mstats.kruskalwallis(a3))


结果与

KruskalResult(statistic=0.05142857142857338, pvalue=0.8205958397554376)
KruskalResult(statistic=0.05142857142857338, pvalue=0.8205958397554376)


但是,如果我将两个“数组”设置为不同的长度,例如:

b1=np.random.randn(10)
b2=np.random.randn(12)
b3=b1,b2
print(mstats.kruskalwallis(b1,b2))
print(mstats.kruskalwallis(b3))


第一个的结果是

KruskalResult(statistic=0.626086956521732, pvalue=0.4287942873854923)


第二个是

ValueError: The input should be 2D


如果我的b3带有多个“数组”,该怎么办才能解决错误?

最佳答案

您遇到的问题是您需要添加argument unpacking operator-*

mstats.kruskalwallis(*b3))


原因是调用带有两个参数的kruskalwallis函数与调用带有两个参数的元组的同一个函数的区别。

要将这两个元组转换为函数的两个参数,您需要使用星号-参数解压缩。

关于python - 如何使用mstats.kruskalwallis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57266828/

10-12 22:19