2017-12-26 19 views
0

dask에서 dask.array을 만드는 가장 효율적인 방법은 무엇입니까? 이 시리즈는 300 만 개 목록으로 구성되어 있습니다. 현재이 파티션은 500 개의 파티션으로 나뉩니다. 는 현재 내가 노력하고 있어요 :은 dask에서 효율적으로 dask.array를 만듭니다. 목록의 계열

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) 

아이디어는 dask.array에 함께 사람들을 nupy 배열로 각 파티션을 변환하고 바느질하는 것입니다. 이 코드는 계속 실행됩니다. 충분한 데이터가있는 한 순식간에이 데이터에서이 데이터로 빠르게 배열을 만들 수 있습니다.

답변

1

나는 dask.delayed를 사용하여 올바른 방향으로 가고 있다고 생각합니다. 그러나 시리즈에 list를 부르는 것은 아마도 이상적이지 않습니다. 귀하의 시리즈 중 하나를 numpy 배열로 변환 한 다음이를 지연시킬 수있는 함수를 작성합니다. 이 라인에 대한 또한

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 기능에 지연 연락해 주시길 안됩니다. 그들은 이미 게으르다.