Python:DEAP:以编程方式处理func参数的数量

2024-09-26 17:56:41 发布

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

在evaluate函数中(对于具有二进制输入/输出的遗传编程符号回归问题),我希望能够以编程方式处理具有不同数量参数的函数。(我设置了其余的代码,以便根据示例数据中的列数自动调整所有内容。输入是一个努比·恩达雷(矩阵))。在不使用多个if语句的情况下,如何处理下面的代码?(在下面的代码中,func接受3个输入,第4列是答案,但是任何其他运行都可能有不同数量的输入。我想自动处理。)

# EVALUATOR
def evalSymbReg(individual):
    # Transform the tree expression in a callable function
    numOfNodes = len(individual)
    func = toolbox.compile(expr=individual)
    # diff = the number wrong / the total number of questions
    diff = (numpy.sum((func(inputDataTransposed[0], inputDataTransposed[1], inputDataTransposed[2]) - inputDataTransposed[3])**2).astype(numpy.float64) / len(inputDataTransposed[0]))
    return diff,

Tags: the函数代码numpynumber数量len编程
1条回答
网友
1楼 · 发布于 2024-09-26 17:56:41

尝试:

import inspect

def numargs(func):
    args, varargs, keywords, defaults = inspect.getargspec(func)
    return len(args)

适用于没有*a**k参数的“普通”函数func

然后,你可以打电话

^{pr2}$

类似的方法可以给func尽可能多的参数,只要这些参数的值可以简单地确定,例如本例中的切片。

相关问题 更多 >

    热门问题