2017-12-26 6 views
0

daskからdask.arrayを作成する最も効率的な方法は何ですか? このシリーズは、500万のリスト300から構成されています。 現在、500個のパーティションに分割されています。 は、現在、私がしようとしています:dask.arrayをdaskから効率的に作成します。リストのシリーズ

pt = [delayed(np.array)(y) 
     for y in 
     [delayed(list)(x) 
     for x in series.to_delayed()]] 
da = delayed(dask.array.concatenate)(pt, axis=1) 
da = dask.array.from_delayed(da, (vec.size.compute(), 300), dtype=float) 

をアイデアはnupy配列に各パーティションを変換し、dask.arrayに一緒に それらをステッチすることです。 このコードは永遠に実行されています。 十分なRAMがある限り、このデータからすぐにこのデータからnumpyアレイを構築することができます。

答えて

1

あなたは正しいトラックにdask.delayedを使用していると思います。しかし、シリーズのlistを呼び出すのはおそらく理想的ではありません。私は、あなたのシリーズの1つを数の少ない配列に変換してから遅延させる関数を作成します。

また
def convert_series_to_array(pandas_series): # make this as fast as you can 
    ... 
    return numpy_array 

L = dask_series.to_delayed() 
L = [delayed(convert_series_to_array)(x) for x in L] 
arrays = [da.from_delayed(x, shape=(np.nan, 300), dtype=...) for x in L] 
x = da.concatenate(arrays, axis=0) 

、この行について:

da = delayed(dask.array.concatenate)(pt, axis=1) 

あなたはDASK機能に遅れを呼び出すことはありません。彼らはすでに怠惰です。

関連する問題