2017-01-18 7 views
1

map_block機能が2回実行されるのはなぜですか?私は以下の例を実行すると:map_block関数が2回実行されるのはなぜですか?

import dask.array as da 
import numpy as np 

def derivative(x): 
    print(x.shape) 
    return x - np.roll(x, 1) 

x = np.array([1, 1, 2, 3, 3, 3, 2, 1, 1]) 
d = da.from_array(x, chunks = 5) 
y = d.map_blocks(derivative) 
res = y.compute() 

私はこの出力を得る:

(1L,) 
(5L,) 
(4L,) 

私のチャンクが((5、4)、)、私はderivative機能がどうにか回実行する必要があることを前提としているので、以前は本当にこれらのチャンクで実行されています、そうですか?

v0.13.0にはPython v2.7とdaskがあります。

答えて

1

マップブロック呼び出しにdtypeを指定しないと、小さなサンプルデータセット(したがってシングルトンシェイプ)で関数が実行されます。あなたが知っているなら、dtypeを明示的に渡すことでこれを避けることができます。

y = d.map_blocks(derivative, dtype=d.dtype) 
関連する問題