When reading data from a Dataset, pyfive currently loads all chunks into memory before slicing the requested data. This behavior is inefficient when only a small region of the data is required which could be extracted from a small number or even a single chunk.
The code used for slicing dask arrays may be helpful for determining which chunks need to be read for the given slice.