python - 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 的平均值?
欢迎任何解释,非常感谢您的帮助!
解决方案
这是因为您正在使用 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 上,而不是在它的元素上。没有循环。
推荐阅读
- c++ - += 运算符同时作为参数传递
- javascript - onchange 只检测 div 的第一个复选框
- vue.js - Vue.Js 在组件之间画线问题
- c - 如何在 C 中编辑特定的二进制数据而不删除/覆盖整个文件?
- scala - 实例化 'org.apache.spark.sql.hive.HiveSessionState' 时出错:使用 spark session 读取 csv 文件时
- html - 如何从这一行生成工具栏?
- java - 创建 zip 文件而不写入磁盘
- build - 在执行“bitbake image_name”期间出现错误“检查程序 pkg-config:未找到”
- json - 用jq将过滤后的json转换成csv
- python - 带有熊猫数据框的滑块小部件