2016-08-26 3 views
1

Am Beispiel auf http://dask.pydata.org/en/latest/array-creation.htmlVerständnis der Prozess mehrere Dateiinhalte in Dask Array von Laden und wie es skaliert

filenames = sorted(glob('2015-*-*.hdf5') 
dsets = [h5py.File(fn)['/data'] for fn in filenames] 
arrays = [da.from_array(dset, chunks=(1000, 1000)) for dset in dsets] 
x = da.concatenate(arrays, axis=0) # Concatenate arrays along first axis 

Ich habe Schwierigkeiten beim Verständnis der nächsten Zeile und ob es ein dask_array von „dask arrays“ oder ein "normales" np-array, das auf so viele dask-arrays zeigt, wie es datasets in allen hdf5-dateien gab, die zurückgegeben werden.

Gibt es eine Leistungssteigerung (Gewinde- bzw. Speicher basiert) während der Dateilesestufe als Folge des da.from_array oder nur, wenn Sie in die dask Array verketten x, wo Sie in Verbesserungen

Antwort

1

Die Objekte erwarten sollten, Die Liste arrays enthält alle Dies-Arrays, eines für jede Datei.

Das Objekt x ist auch ein DASK-Array, das alle Ergebnisse der DASK-Arrays in der arrays-Liste kombiniert. Es ist kein DASK-Array von DASK-Arrays, es ist nur ein einzelnes, flaches DASK-Array mit einer größeren ersten Dimension.

Es wird wahrscheinlich keine Leistungssteigerung beim Lesen von Daten geben. Sie sind wahrscheinlich durch Ihre Festplattenbandbreite an E/A gebunden. Die meisten Leute in dieser Situation verwenden dask.array, weil sie mehr Daten haben, als bequem in den RAM passen können. Wenn das für dich nicht wertvoll ist, würde ich bei NumPy bleiben.