Array — Dask documentation (original) (raw)

Array

Dask Array implements a subset of the NumPy ndarray interface using blocked algorithms, cutting up the large array into many small arrays. This lets us compute on arrays larger than memory using all of our cores. We coordinate these blocked algorithms using Dask graphs.

Design

Dask arrays coordinate many numpy arrays

Dask arrays coordinate many NumPy arrays (or “duck arrays” that are sufficiently NumPy-like in API such as CuPy or Sparse arrays) arranged into a grid. These arrays may live on disk or on other machines.

New duck array chunk types (types below Dask onNEP-13’s type-casting hierarchy) can be registered viaregister_chunk_type(). Any other duck array types that are not registered will be deferred to in binary operations and NumPy ufuncs/functions (that is, Dask will return NotImplemented). Note, however, that any ndarray-like type can be inserted into a Dask Array usingfrom_array().

Common Uses

Dask Array is used in fields like atmospheric and oceanographic science, large scale imaging, genomics, numerical algorithms for optimization or statistics, and more.

Scope

Dask arrays support most of the NumPy interface like the following:

However, Dask Array does not implement the entire NumPy interface. Users expecting this will be disappointed. Notably, Dask Array lacks the following features:

See the dask.array API for a more extensive list of functionality.

Execution

By default, Dask Array uses the threaded scheduler in order to avoid data transfer costs, and because NumPy releases the GIL well. It is also quite effective on a cluster using the dask.distributed scheduler.