python的 map、reduce、lambda应用总结

本文是作者在学习Python深度学习时整理的笔记,主要介绍了lambda表达式、map和reduce内置函数的使用。lambda用于创建匿名函数,map函数将一个函数应用于可迭代对象的所有元素,reduce则通过递归应用函数来合并所有元素。文中还展示了这三种函数在感知器模型计算过程中的应用。
摘要由CSDN通过智能技术生成

近期开始使用python入门深度学习,几天下来发现python基础极差,在八月十五中秋节晚上抽空记下笔记,加深学习印象!

在学习感知器过程中 使用到了 lambda 表达式、map 和 reduce 内置函数

1. lambda表达式
def add_1(x,y):  # 普通函数
    return x+y

add_2 = lambda x,y:x+y # 函数式编程 / 匿名函数

print('add_1(2,3) = ' , add_1(2,3))
print('add_2(3,3) = ' , add_2(3,3))

输出结果为:

add_1(2,3) =  5
add_2(3,3) =  6
2. map内置函数

map函数的参数:接收一个函数和一个可迭代对象

map函数的返回值:一个map对象,如下:

f = map(lambda x:x*x,[1,2,3,4,5])
print(f)
------------------------输出为-----------------------
<map object at 0x0000022CEDDE8E80>

若想要获取想要的结果,应将其转为list对象,如下:

# 可以将map中的lambda表达式变为 fun 函数
def fun(x):
    return x*x
e = map(fun,[1,2,3,4,5])  # 其返回值与下相同
f = map(lambda x:x*x,[1,2,3,4,5])

print(list(f))
print(list(e))
------------------------输出为-----------------------
[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]

即 map高阶内置函数,接收一个函数 fun 和一个 list 参数 ,通过把函数 fun 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

其中map接收的第一个参数 fun, 并非只能是具有一个参数的 fun;如下:

f = map(lambda x,y,z:x+y+z,[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5])
print(list(f))
--------------------输出为—---------------------------
[3, 6, 9, 12, 15]
3. reduce内置函数

reduce函数的参数:一个函数和一个可迭代对象

reduce函数对 list 中的每个元素反复调用函数 fun ,并返回最终结果。如:

from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101))) #range(a,b) 即是生成 a 到 b-1 之间的所有数字
----------------------------输出为-----------------------
5050

另外reduce函数还可以传入3个参数,其中第三个参数即为初始值,如:

from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101),100))
----------------------------输出为------------------------
5150

最后,我们来看一个包含了这三个函数的公式,该公式截取自实现感知器过程中计算输出的函数

reduce(
	lambda a, b: a + b, 
	list(map(lambda tp: tp[0] * tp[1], zip(input_vec, self.weights))), 
	0.0
)+ self.bias

其含义为:
    将输入层的特征向量 input_vec 与 其权重向量 weights 作乘积运算,最终将每组进行相加,并加上偏置项!

当input_vec 与 weights 分别为如下向量的时候:

input_vec = [1,2,3,4,5]
weights = [0.1,0.2,0.1,0.2,0.2]
---------------------其输出为------------------ 
1*0.1+2*0.2+3*0.1+4*0.2+5*0.2 = 2.6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhang L.R.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值