Python 进阶 —— 使用 map reduce

  • map :不改变原始序列的规模;
  • reduce:将序列映射为一个标量;

0. 简介

map(func, *iterables) --> map object
reduce(function, sequence[, initial]) -> value
  • (0)想要使用 reduce 函数,需要 from functools import reduce

  • (1)map 的返回值是一个 map object,而 reduce 的返回值是一个值;

  • (2)map 迭代式地处理(使用func)可迭代序列中的每一个值,要求 func 只可接收一个参数,每一次调用 func 之间没有关系;

  • (3)而 reduce 而迭代式从序列中取出两个值,并将结果累计;

    reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 
    						⇒ ((((1+2)+3)+4)+5). 
    

2. 距离

  • 计算内积

    def inner_prod(x, y):
    	return reduce(operator.add, map(lambda x: x[0]*x[1], zip(x, y)))
    
  • 计算方差

    def var(x):
    	mu = sum(x)/float(len(x))
    	return reduce(operator.add, map(lambda x: (x-mu)**2, x))/float(x)
    
  • 根据概率分布计算信息熵

    def calcEnt(x):
    	return reduce(operator.add, map(lambda x: -x*math.log(x, 2), x))
    

3. map 处理多元函数

可变长度的参数列表(第一个参数除外的后续参数)的长度就表示多元参数为几元函数,如下例的二元函数。

map(lambda x, y: x**2+y**2, [3, 6], [4, 8])
			# 25, 100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五道口纳什

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

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

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

打赏作者

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

抵扣说明:

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

余额充值