Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的多变量lambda函数,可根据接收的输入变量数量进行缩放_Python_Function_Lambda_Dimensions - Fatal编程技术网

Python中的多变量lambda函数,可根据接收的输入变量数量进行缩放

Python中的多变量lambda函数,可根据接收的输入变量数量进行缩放,python,function,lambda,dimensions,Python,Function,Lambda,Dimensions,以下玩具函数通常采用两个输入变量: f = lambda u1, u2 : (u1*u2)*(u1**2+u2**2) 但可以超越双变量情况扩展到更高的维度: if dim == 2: f = lambda u1, u2 : (u1*u2)*(u1**2+u2**2) if dim == 3: f = lambda u1, u2, u3 : (u1*u2*u3)*(u1**2+u2**2+u3**2) if dim == 4: f = lambda u1, u2, u3

以下玩具函数通常采用两个输入变量:

f = lambda u1, u2 : (u1*u2)*(u1**2+u2**2)
但可以超越双变量情况扩展到更高的维度:

if dim == 2:
    f = lambda u1, u2 : (u1*u2)*(u1**2+u2**2)
if dim == 3:
    f = lambda u1, u2, u3 : (u1*u2*u3)*(u1**2+u2**2+u3**2)
if dim == 4:
    f = lambda u1, u2, u3, u4 : (u1*u2*u3*u4)*(u1**2+u2**2+u3**2+u4**2)
如何编写lambda函数,使其能够在调用
lambda u1、u2、u3、u4、
以及函数体本身,基于发送给它的输入数量,类似于定义的函数可以声明为
def(*args)
,其中
*args
是任意数量的输入参数?

支持与相同的参数列表语法,包括可变位置参数和关键字参数

f=lambda*us:math.prod(us)*总和(u**2表示u在美国)
如果
*us
在乘以
1
或添加到
0
时不是不变的,
*
+
操作可以通过以下方式跨元素应用:

从functools导入reduce
进口经营者
f=λ*us:reduce(operator.mul,us)*reduce(operator.add,(u**2表示u在us中))
支持与相同的参数列表语法,包括可变位置参数和关键字参数

f=lambda*us:math.prod(us)*总和(u**2表示u在美国)
如果
*us
在乘以
1
或添加到
0
时不是不变的,
*
+
操作可以通过以下方式跨元素应用:

从functools导入reduce
进口经营者
f=λ*us:reduce(operator.mul,us)*reduce(operator.add,(u**2表示u在us中))

你的意思是
lambda*args:…
?既然您似乎已经知道这是如何处理
def
函数文本的,那么为什么要使用
lambda
呢?您看过了吗?ok调用
lambda*args:
很有意义,但是,如果函数体遵循如图所示的数学结构,函数体如何也能随着参数的数量进行缩放?您的公式是项除以平方和的乘积。你不能把它编码成一个函数吗?你是说
lambda*args:…
?既然您似乎已经知道这是如何处理
def
函数文本的,那么为什么要使用
lambda
呢?您看过了吗?ok调用
lambda*args:
很有意义,但是,如果函数体遵循如图所示的数学结构,函数体如何也能随着参数的数量进行缩放?您的公式是项除以平方和的乘积。你不能把它编码成一个函数吗?为什么
sum
包含一个for循环,而
math.prod
没有?使用
numpy.prod
numpy.sum
,这会发生变化吗?因为乘积中的每个元素都是按原样取的,而求和中的每个元素都需要平方。请注意,
u**2表示u在us中
总和(…)内
是一个生成器表达式,它生成一个iterable–对它们的参数进行内部迭代
sum
prod
。可以同时使用
numpy
吗instead@develarist我已经添加了一个版本,该版本应该适用于与问题中显示的函数一起工作的任何类型。例如,这包括
numpy.array
。抱歉并不是要增加更多工作,只是好奇而已。我已经转到另一个步骤,谢谢:为什么
sum
包含for循环,而
math.prod
没有?使用
numpy.prod
numpy.sum
,这会发生变化吗?因为乘积中的每个元素都是按原样取的,而求和中的每个元素都需要平方。请注意,
u**2表示u在us中
总和(…)内
是一个生成器表达式,它生成一个iterable–对它们的参数进行内部迭代
sum
prod
。可以同时使用
numpy
吗instead@develarist我已经添加了一个版本,该版本应该适用于与问题中显示的函数一起工作的任何类型。例如,这包括
numpy.array
。抱歉并不是要增加更多工作,只是好奇而已。我已进入另一个步骤,谢谢: