python 常见函数(v3.0)
lambda 匿名函数
# lambda <params>:<result>
func = lambda x, y: x + y
print(func(1, 2))
# 输出 3
map 函数
将 一个或多个 sequnce 中元素作为参数传递到 func 中执行,并以迭代器的方式将函数执行结果返回。
# map(func, sequnce[, sequnce,....]) -> iterator
>> list(map(lambda x: x+2, [1,2,3]))
[3, 4, 5]
>> list(map(pow, [1,2,3], [2,3,4]))
[1, 8, 81]
filter 函数
过滤器, 若function为None,则会返回包含非空元素的迭代器。
# filter(func or None, sequence) -> iterator
>> list(filter((lambda x: x>0),range(-5,5)))
[1,2,3,4]
>> list(filter(None,range(-5,5)))
[-5, -4, -3, -2, -1, 1, 2, 3, 4]
map 函数
对sequnce中元素依次执行 func, 并返回一个map对象
# map(func, sequence)
>> map(lambda x: x*x*x, range(1, 11)
<map object at 0x7fafdf0d6978>
>> list(map(lambda x: x*x*x, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
当 func 参数为多个参数时, sequence 数量与之对应
reduce 函数
迭代 sequence 中内容逐一调用相应函数, 返回一个结果
# reduce(func, sequence, starting_value)
# starting_value 为初始调用值, 可为空或省略
>> reduce(lambda x, y: x + y, range(1, 11))
55
在 python 3 之后如果想用 reduce 可以采用 functools, 因为其已经被移除 python 3 内置的功能, 方法如下:
import functools
functools.reduce(lambda x, y: x + y, range(1, 11))
zip 函数
接收 sequence 对象作为参数, 将对象中对应的元素打包成为一个个 tuple, 然后返回由这些 tuples 组成的 list. 若传入参数的长度不等, 则返回 list 的长度和参数中长度最短的对象相同. 使用 * 操作符与 zip 函数配合可以实现与 zip 相反的功能,即将合并的序列拆成多个 tuple.
# zip([sequence, ...])
>> x = [1, 2, 3]; y = ['a', 'b', 'c']
>> list(zip(x, y))
[(1,'a'),(2,'b'),(3,'c')]
>> list(zip(*zip(x, y)))
[(1,2,3),('a','b','c')]
# 长度不一样
>> x = [1, 2, 3]; y = ['a', 'b', 'c', 'd']
>> list(zip(x, y))
[(1,'a'),(2,'b'),(3,'c')]
>> list(zip(*zip(x, y)))
[(1,2,3),('a','b','c')]
keras 样本打散
# data_x 是 numpy.array 对象
indices = numpy.random.permutation(data_x.shape[0]) # shape[0]表示第0轴的长度,通常是训练数据的数量
rand_data_x = data_x[indices]
rand_data_y = data_y[indices] # data_y就是标记(label)