- ### 隐函数 lanbda 及 map 函数的应用实例
- '''
- lambda 参数 1, 参数 2, 参数 3,...: 表达式
- '''
- f = lambda x,y :x+y
- print(f(1,2)) ### 输出 3
- '''
- map() 接收一个函数 f 和 一个 Iterator(可迭代对象), 并通过把函数 f 依次作用在 Iterator 的每一个元素上, 并把结果做为新的 Iterator 返回
- '''
- a = [1,2,3]
- b = map(lambda x:x*x ,a)
- print(list(b)) ### 输出 [1,4,9]
- ##map 函数处理字典
- c = {
- 'x':np.array([1,2,3]),
- 'y':[4,5,6]
- }
- ## 调用字典的 key
- d = map(lambda data:data*2,c)
- print(list(d)) ##['xx', 'yy']
- ## 调用字典的 values
- e = map(lambda data:data*2,c.values())
- print(list(e)) ##[array([2, 4, 6]), [4, 5, 6, 4, 5, 6]] ## 注意: 列表 * 2 重复一次, 数组 * 2 元素数字 * 2
- def double(x):
- return x*2
- print(list(map(double,c))) ## ['xx', 'yy']
- print(list(map(double,c.values()))) ##[array([2, 4, 6]), [4, 5, 6, 4, 5, 6]]
map 函数和 lambda 函数
- import tensorflow as tf
- import numpy as np
- ## 定义两个数组
- x = np.arange(6)
- y = np.arange(3,9)
- ## 创建 dataset 数据集
- dataset = tf.data.Dataset.from_tensor_slices({
- 'x':x,
- 'y':y
- })
- c = tf.data.Dataset.range(1,7)
- def getone(dataset):
- iterator = dataset.make_one_shot_iterator() #生成一个迭代器
- one_element = iterator.get_next() #迭代器取值
- return one_element
- one_element1 = getone(dataset)
- one_element2 = getone(c)
- # 定义一个会话内调用的函数
- def sess_get_one(one_element):
- for i in range(6):
- DataV = sess.run(one_element)
- print(DataV)
- # 开启会话, 调取数据
- with tf.Session() as sess:
- sess_get_one(one_element1)
- sess_get_one(one_element2)
- '''{'x': 0,'y': 3}
- {'x': 1, 'y': 4}
- {'x': 2, 'y': 5}
- {'x': 3, 'y': 6}
- {'x': 4, 'y': 7}
- {'x': 5, 'y': 8}
- 1
- 2
- 3
- 4
- 5
- 6
- '''
字典类型的 dataset 数据集
- import tensorflow as tf
- import numpy as np
- ## 定义两个数组
- x = np.arange(6)
- y = np.arange(3,9)
- ## 创建 dataset 数据集
- dataset = tf.data.Dataset.from_tensor_slices({
- 'x':x,
- 'y':y
- })
- dataset1 = dataset.map(lambda data:(data['x']*2,tf.cast(data['y'],tf.float32)))
- c = tf.data.Dataset.range(1,7)
- def getone(dataset):
- iterator = dataset.make_one_shot_iterator() #生成一个迭代器
- one_element = iterator.get_next() #迭代器取值
- return one_element
- one_element1 = getone(dataset)
- one_element2 = getone(c)
- one_element3 = getone(dataset1)
- # 定义一个会话内调用的函数
- def sess_get_one(one_element):
- for i in range(6):
- DataV = sess.run(one_element)
- print(DataV)
- # 开启会话, 调取数据
- with tf.Session() as sess:
- sess_get_one(one_element1)
- sess_get_one(one_element2)
- sess_get_one(one_element3)
- '''{'x': 0,'y': 3}
- {'x': 1, 'y': 4}
- {'x': 2, 'y': 5}
- {'x': 3, 'y': 6}
- {'x': 4, 'y': 7}
- {'x': 5, 'y': 8}
- 字典类型的 dataset 数据集, 每取一个值都带着 key
- 1
- 2
- 3
- 4
- 5
- 6
- (0, 3.0)
- (2, 4.0)
- (4, 5.0)
- (6, 6.0)
- (8, 7.0)
- (10, 8.0)
- 相当于数据变成了:{(0, 3.0),(2, 4.0),(4, 5.0),(6, 6.0),(8, 7.0),(10, 8.0)}
- '''
来源: http://www.bubuko.com/infodetail-3255911.html