dask.bag.map
dask.bag.map¶
- dask.bag.map(func, *args, **kwargs)¶
将一个函数逐元素应用于一个或多个包。
请注意,所有
Bag
参数必须分区相同。- 参数
- 函数可调用
- *args, **kwargs包, 物品, 延迟, 或对象
传递给
func
的参数和关键字参数。非Bag的参数/关键字参数会在所有对func
的调用中广播。
注释
对于带有多个 Bag 参数的调用,相应的分区应具有相同的长度;如果它们不相同,调用将在计算时出错。
示例
>>> import dask.bag as db >>> b = db.from_sequence(range(5), npartitions=2) >>> b2 = db.from_sequence(range(5, 10), npartitions=2)
对包中的所有元素应用一个函数:
>>> db.map(lambda x: x + 1, b).compute() [1, 2, 3, 4, 5]
从多个包中应用带有参数的函数:
>>> from operator import add >>> db.map(add, b, b2).compute() [5, 7, 9, 11, 13]
非袋装参数会在映射函数调用的所有实例中广播:
>>> db.map(add, b, 1).compute() [1, 2, 3, 4, 5]
也支持关键字参数,并且与常规参数具有相同的语义:
>>> def myadd(x, y=0): ... return x + y >>> db.map(myadd, b, y=b2).compute() [5, 7, 9, 11, 13] >>> db.map(myadd, b, y=1).compute() [1, 2, 3, 4, 5]
参数和关键字参数也可以是
dask.bag.Item
或dask.delayed.Delayed
的实例。这里我们将把包中的最大值添加到每个元素中:>>> db.map(myadd, b, b.max()).compute() [4, 5, 6, 7, 8]