【问题标题】:How to (log) transform *args arguments without losing structure如何(记录)在不丢失结构的情况下转换 *args 参数
【发布时间】:2021-05-25 15:21:38
【问题描述】:

我正在尝试将统计测试应用于具有可变组数的一些数据集。当我尝试对所述组执行日志转换同时保持执行测试功能(在本例中为 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))

【问题讨论】:

    标签: python scipy variable-length


    【解决方案1】:

    IIUC,* 在您正在形成的列表前面,同时调用 kruskal 应该可以解决问题:

    test = stats.kruskal(*[np.log(i) for i in args])
    

    Asterisk 解包列表并将列表的每个条目作为参数传递给被调用的函数,即kruskal 这里。

    【讨论】:

      猜你喜欢
      • 2015-03-07
      • 2019-06-04
      • 2019-05-31
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      相关资源
      最近更新 更多