Python Lambda函数——一个有趣的问题

Python Lambda函数——一个有趣的问题,python,pandas,lambda,Python,Pandas,Lambda,我有一个关于python中lambda函数的有趣问题。我很想听到你的精彩解释 short_list = np.array([1,2,3,4,5]) func_1 = lamda x: x*2 func_2 = lamda x: x - x.mean() 当我们在短列表中使用函数1时,我们几乎将每个元素乘以2 在短列表上应用func_2时,我们用短列表的平均值减去每个元素 我的问题是:既然lambda函数中的x表示列表中的每个元素,python怎么能将x.mean()理解为短列表的平均值 欢迎

我有一个关于python中lambda函数的有趣问题。我很想听到你的精彩解释

short_list = np.array([1,2,3,4,5])
func_1 = lamda x: x*2 
func_2 = lamda x: x - x.mean()
当我们在短列表中使用函数1时,我们几乎将每个元素乘以2

短列表上应用func_2时,我们用短列表的平均值减去每个元素


我的问题是:既然lambda函数中的x表示列表中的每个元素,python怎么能将x.mean()理解为短列表的平均值


欢迎任何解释,非常感谢您的帮助

这是因为您使用的是np.array,因此x是一个向量

func_1=x*2与short_list*2相同。如果传递一个np.array,则数组将乘以2。(这不是按元素应用的-它一次应用于整个向量)

func_2与short_list相同-标量short_list.mean()。这将产生一个包含每个元素的np.array(标量short_list.mean()也不是按元素应用的,而是作为向量)


底线是每个操作都直接在np.array上,而不是在其元素上。没有循环。

“python怎么能理解
x.mean()
作为
short\u list
的平均值?”-好吧,它不“理解”
x
short\u list
是一样的。事实上,
lambda
s并不关心您作为参数传递什么-它们只需要一些
x
,不管它是什么。“因为lambda函数中的x代表列表中的每个元素”:这取决于您如何使用
lambda
。如果执行
func\u 1(短列表)
x
是整个数组;没有一个元素。可能是numpy实现了自己的映射行为,将列表上的操作视为元素本身的操作。但这与
lambda
s无关。事实上,当您执行func_2(short_list)时,
lambda
中的
x
引用您作为参数发送的内容,在本例中,它是您的short_list,因此当它调用
x.mean()
时,实际上它调用
short_list.mean()
。记住:lambda中的x表示参数passedTry
short\u list+1
short\u list-3
。您得到了什么结果?@ForceBru非常感谢您的评论!我得到了它!哇!非常感谢你!我现在明白了!有趣的是,我一直认为x意味着元素!伟大的很乐意帮忙。