dask.bag.Bag.map

dask.bag.Bag.map

Bag.map(func, *args, **kwargs)[源代码]

将一个函数逐元素应用于一个或多个包。

请注意,所有 Bag 参数必须分区相同。

参数
函数可调用
*args, **kwargs袋子, 物品, 或对象

传递给 func 的额外参数和关键字参数,位于调用 bag 实例 之后。非 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)

对包中的所有元素应用一个函数:

>>> b.map(lambda x: x + 1).compute()
[1, 2, 3, 4, 5]

从多个包中应用带有参数的函数:

>>> from operator import add
>>> b.map(add, b2).compute()
[5, 7, 9, 11, 13]

非袋装参数会在映射函数调用的所有实例中广播:

>>> b.map(add, 1).compute()
[1, 2, 3, 4, 5]

也支持关键字参数,并且与常规参数具有相同的语义:

>>> def myadd(x, y=0):
...     return x + y
>>> b.map(myadd, y=b2).compute()
[5, 7, 9, 11, 13]
>>> b.map(myadd, y=1).compute()
[1, 2, 3, 4, 5]

参数和关键字参数也可以是 dask.bag.Item 的实例。这里我们将把包中的最大值添加到每个元素中:

>>> b.map(myadd, b.max()).compute()
[4, 5, 6, 7, 8]