了解将多个文件内容加载到Dask数组中的过程以及它如何扩展

时间:2016-08-26 17:00:30

标签: dask

使用http://dask.pydata.org/en/latest/array-creation.html

上的示例
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

我无法理解下一行,以及它是否是“dask数组”的dask_array或“正常”np数组,它指向与返回的所有hdf5文件中的数据集一样多的dask数组。 / p>

作为da.from_array的结果,在文件读取阶段期间是否有任何性能(基于线程或内存)的增加,或者仅当您连接到dask数组x时,您应该期望改进

1 个答案:

答案 0 :(得分:1)

void segregate0and1(int arr[], int size) { /* Initialize left and right indexes */ int left = 0, right = size - 1; while (left < right) { /* Increment left index while we see 0 at left */ while (arr[left] == 0 && left < right) left++; /* Decrement right index while we see 1 at right */ while (arr[right] == 1 && left < right) right--; /* If left is smaller than right then there is a 1 at left and a 0 at right. Exchange arr[left] and arr[right]*/ if (left < right) { arr[left] = 0; arr[right] = 1; left++; right--; } } } 列表中的对象都是dask数组,每个文件对应一个。

arrays对象也是一个dask数组,它结合了x列表中dask数组的所有结果。它不是dask数组的dask.array,它只是一个具有更大第一维的扁平dask数组。

读取数据的性能可能不会提高。您可能受磁盘带宽的I / O限制。在这种情况下,大多数人都在使用dask.array,因为他们拥有的数据多于可以方便地放入RAM的数据。如果这对你没有价值,那么我会坚持使用NumPy。