python机器学习常用语法

来源:互联网 发布:手机网络电话软件排名 编辑:程序博客网 时间:2024/05/22 10:45

1. python内建函数map(),reduce(),filter()

内建函数可以直接通过help()在控制台查询,比如help(map)。模块下的函数,比如math模块下的sin()函数,要在控制台查询,需要import math,help(math.sin)。

(1) map()

map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下:

>>> def f(x):...     return x * x...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])>>> list(r)[1, 4, 9, 16, 25, 36, 49, 64, 81]
map函数主要作用于要对一个list做同样的操作,返回一个操作后的序列。比如从文件中读取一行数据,并转化成float()类型如下:

f = file(path)
     x = []
     y = []
     for i, d in enumerate(f):  #i代表编号,d代表第i行的值
         if i == 0:
             continue
         d = d.strip()
         if not d:
             continue
         d = map(float, d.split(','))
         x.append(d[1:-1])
         y.append(d[-1])

(2) reduce()

再看reduce的用法。reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方说对一个序列求和,就可以用reduce实现:

>>> from functools import reduce>>> def add(x, y):...     return x + y...>>> reduce(add, [1, 3, 5, 7, 9])25

当然求和运算可以直接用Python内建函数sum(),没必要动用reduce

但是如果要把序列[1, 3, 5, 7, 9]变换成整数13579reduce就可以派上用场:

(3)filter()

Python内建的filter()函数用于过滤序列。

map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

def is_odd(n):    return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
(4)sorted()

Python内置的sorted()函数就可以对list进行排序:

>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]

此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

>>> sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)['Zoo', 'Credit', 'bob', 'about']

1 0
原创粉丝点击