當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。