首页 > 解决方案 > 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()

当我们在 short_list 上使用func_1我们几乎将每个元素乘以 2。

当在short_list上应用func_2时,我们用 short_list 的平均值减去每个元素。

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

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

标签: pythonpandaslambda

解决方案


这是因为您正在使用 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 上,而不是在它的元素上。没有循环。


推荐阅读