如何在不丢失结构的情况下(记录)转换 *args 参数
How to (log) transform *args arguments without losing structure
我正在尝试对一些组数可变的数据集应用统计检验。当我尝试对所述组执行对数转换同时保持执行测试功能(在本例中为 scipy 的 kruskal()
)的能力时,这会导致问题,该功能需要可变数量的参数,每组数据一个。
下面的代码是我想要的想法。自然 stats.kruskal([np.log(i) for i in args])
不起作用,因为 kruskal()
不期望数组列表,而是每个数组一个参数。如何执行日志转换(或任何类型的更改,真的),同时仍然能够使用该功能?
import scipy.stats as stats
import numpy as np
def t(*args):
test = stats.kruskal([np.log(i) for i in args])
return test
a = [11, 12, 4, 42, 12, 1, 21, 12, 6]
b = [1, 12, 4, 3, 14, 8, 8, 6]
c = [2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8]
print(t(a, b, c))
IIUC,*
在调用 kruskal
时形成的列表前面应该可以解决问题:
test = stats.kruskal(*[np.log(i) for i in args])
Asterisk 解压缩列表并将列表的每个条目作为参数传递给被调用的函数,即 kruskal
这里。
我正在尝试对一些组数可变的数据集应用统计检验。当我尝试对所述组执行对数转换同时保持执行测试功能(在本例中为 scipy 的 kruskal()
)的能力时,这会导致问题,该功能需要可变数量的参数,每组数据一个。
下面的代码是我想要的想法。自然 stats.kruskal([np.log(i) for i in args])
不起作用,因为 kruskal()
不期望数组列表,而是每个数组一个参数。如何执行日志转换(或任何类型的更改,真的),同时仍然能够使用该功能?
import scipy.stats as stats
import numpy as np
def t(*args):
test = stats.kruskal([np.log(i) for i in args])
return test
a = [11, 12, 4, 42, 12, 1, 21, 12, 6]
b = [1, 12, 4, 3, 14, 8, 8, 6]
c = [2, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8]
print(t(a, b, c))
IIUC,*
在调用 kruskal
时形成的列表前面应该可以解决问题:
test = stats.kruskal(*[np.log(i) for i in args])
Asterisk 解压缩列表并将列表的每个条目作为参数传递给被调用的函数,即 kruskal
这里。