从python字典向另一个函数调用具有多个参数的函数名

2024-10-04 03:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把python字典中的函数一个接一个地调用到另一个函数中

feature={
1:[perm_entropy, 3, True],
2:[svd_entropy, 3, 1, True],
3:[petrosian_fd],
4:[katz_fd],
5:[higuchi_fd],
6:[hjorth_mobility],
7:[hjorth_complexity]}

我试图调用上面的函数如下

sub_25=[]
for i in feature.values():
    sub_25.append(sub25.groupby('trial')[col1].agg(i))

除前2个功能外,其他所有功能都正常工作。我认为这是因为他们有额外的参数。 这两个函数可以很好地工作,如果它们分别调用如下

sub_25.append(sub25.groupby('trial')[col1].agg(perm_entropy, 3, True))

如何处理这两个函数? EEG data


Tags: 函数功能true字典aggfeaturecol1entropy
2条回答

在文档(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.agg.html)中,pandasagg方法接受一个函数作为第一个参数,第二个是可选轴,然后是将传递给指定函数的位置参数。你知道吗

要在for循环中执行此操作,应该使用*来解压i,因为i是需要传递给agg的参数列表。你知道吗

sub_25=[]
for i in feature.values():
    sub_25.append(sub25.groupby('trial')[col1].agg(*i))

例如,假设i = [perm_entropy, 3, True],那么sub_25.append(sub25.groupby('trial')[col1].agg(*i))等价于sub_25.append(sub25.groupby('trial')[col1].agg(perm_entropy, 3, True)),这就是你所追求的。你知道吗

您需要的是部分应用于您的用例的函数。Python的functools包可以解决这个问题。您可以按照以下示例更改代码:

from functools import partial

def addthree(a,b,c): 
    return a+b+c

partial_sum = partial(addthree,1,2)

fdict = {1: partial_sum}

fdict[1](4) // this returns 7 on the console

类似地,您可以用它所需的参数编写perm_entropy,并传递 你的价值观

new_perm_entropy = partial(perm_entropy,3,True)
feature = {1: new_perm_entropy,..}
feature[1](your_args_here)

您可以阅读部分应用的函数以获得进一步的说明。你知道吗

相关问题 更多 >