Part 1.5:函数、lambda和Map/Reduce

90 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

Applications of Deep Neural Networks with Keras

基于Keras的深度神经网络应用

著:Jeff Heaton 译:人工智能学术前沿

目录

1.Python基础

2.机器学习Python

3.TensorFlow简介

4.表格类数据的训练

5.正则化和Dropout

6.用于计算机视觉的卷积神经网络

7.生成对抗网络

8.Kaggle数据集

9.迁移学习

10.Keras的时间序列

11.自然语言处理与语音识别

12.强化学习

13.Advanced/Other Topics

14.其他神经网络技术

1.5:函数、lambda和Map/Reduce

Part 1.5: Functions, Lambdas, and Map/Reduce

函数、lambda和map/reduce可以让您以高级的方式处理数据。我们将在这里介绍这些技术,并在下一个模块中展开,该模块将讨论Pandas。

函数的使用

functions

在Python中,函数形参可以被指定的或不指定的。也可以使用默认值。考虑下面的函数。

def say_hello(speaker, person_to_greet, greeting = "Hello"):
    print(f'{greeting} {person_to_greet}, this is {speaker}.')
    
say_hello('Jeff', "John")
say_hello('Jeff', "John", "Goodbye")
say_hello(speaker='Jeff', person_to_greet="John", greeting = "Goodbye")

输出

Hello John, this is Jeff.

Goodbye John, this is Jeff.

Goodbye John, this is Jeff.

函数是捕获通常执行的代码的一种方法。考虑以下函数,该函数可用于从首字母大写的字符串中裁剪空白内容

def process_string(str):
    t = str.strip()
    return t[0].upper()+t[1:]
str = process_string("  hello  ")
print(f'"{str}"')

输出

"Hello"

Map函数

Map

python的map是一个非常有用的函数,许多不同的编程语言都提供了它。map函数接受一个列表,并将一个函数应用于该列表的每个成员,并返回与第一个列表大小相同的第二个列表

l = ['   apple  ', 'pear ', 'orange', 'pine apple  ']
list(map(process_string, l))

输出

['Apple', 'Pear', 'Orange', 'Pine apple']

map函数与我们前面讨论的Python生成式非常相似。下面的生成式完成了与前面调用map相同的任务。

l = ['   apple  ', 'pear ', 'orange', 'pine apple  ']
l2 = [process_string(x) for x in l]
print(l2)

输出

['Apple', 'Pear', 'Orange', 'Pine apple']

使用映射函数还是生成式函数的选择取决于程序员。我倾向于使用map,因为它在其他编程语言中很常见。

Filter函数

Filter

map函数总是创建与原始列表大小相同的新列表,而filter函数创建的列表可能更小。

def greater_than_five(x):
    return x>5


l = [ 1, 10, 20, 3, -2, 0]
l2 = list(filter(greater_than_five, l))
print(l2)

输出

[10, 20]

Lambda函数

Lambda

创建一个完整的函数来检查一个值是否大于5,这似乎有些乏味。lambda为您节省了这一努力。lambda本质上是一个未命名的函数。

l = [ 1, 10, 20, 3, -2, 0]
l2 = list(filter(lambda x: x>5, l))
print(l2)

输出

[10, 20]

Reduce函数

Reduce

最后,我们将利用减少。与filtermap一样,reduce函数也适用于列表。但是,reduce的结果是一个单独的值。考虑是否要对列表的值求和。求和是由lambda实现的。

from functools import reduce


l = [ 1, 10, 20, 3, -2, 0]
result = reduce(lambda x,y: x+y,l)
print(result)

输出

32