当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.bag.Bag.fold用法及代码示例


用法:

Bag.fold(binop, combine=None, initial='__no__default__', split_every=None, out_type=<class 'dask.bag.core.Item'>)

可并行化约简

Fold 类似于内置函数reduce,只是它是并行工作的。 Fold 采用两个二元运算符函数,一个用于减少数据集的每个分区,另一个用于组合分区之间的结果

  1. binop : 在每个分区内减少的二元运算符

  2. combine : 二元运算符组合 binop 的结果

这将如下所示:

>>> intermediates = [reduce(binop, part) for part in partitions]  
>>> final = reduce(combine, intermediates)

如果只给出了一个函数,那么它将用于两个函数binopcombine,如下例所示来计算总和:

>>> def add(x, y):
...     return x + y
>>> import dask.bag as db
>>> b = db.from_sequence(range(5))
>>> b.fold(add).compute()
10

我们提供完整的二元运算符及其默认参数

>>> b.fold(binop=add, combine=add, initial=0).compute()
10

更复杂的二元运算符也是可行的

>>> def add_to_set(acc, x):
...     ''' Add new element x to set acc '''
...     return acc | set([x])
>>> b.fold(add_to_set, set.union, initial=set()).compute()
{0, 1, 2, 3, 4}

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.bag.Bag.fold。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。