ndv

Simple, fast-loading, asynchronous, n-dimensional array viewer, with minimal
dependencies.
Works in Qt, Jupyter, or wxPython.
import ndv
data = ndv.data.cells3d()
ndv.imshow(data)

ndv.imshow()
creates an instance of
ndv.ArrayViewer
,
which you can also use directly:
import ndv
viewer = ndv.ArrayViewer(data)
viewer.show()
ndv.run_app()
[!TIP]
To embed the viewer in a broader Qt or wxPython application, you can
access the viewer's
widget
attribute and add it to your layout.
Features
- ⚡️ fast to import, fast to show
- 🪶 minimal dependencies
- 📦 supports arbitrary number of dimensions
- 🥉 2D/3D view canvas
- 🌠 supports VisPy or
pygfx backends
- 🛠️ support Qt, wx, or
Jupyter GUI frontends
- 🎨 colormaps provided by cmap
- 🏷️ supports named dimensions and categorical coordinate values (WIP)
- 🦆 supports most array types, including:
numpy.ndarray
cupy.ndarray
dask.array.Array
jax.Array
pyopencl.array.Array
sparse.COO
tensorstore.TensorStore
(supports named dimensions)torch.Tensor
(supports named dimensions)xarray.DataArray
(supports named dimensions)zarr
(named dimensions WIP)
See examples for each of these array types in
examples
[!NOTE]
You can add support for any custom storage class by subclassing
ndv.DataWrapper
and implementing a couple
methods.
(This doesn't require modifying ndv, but contributions of new wrappers are
welcome!)
Installation
Because ndv supports many combinations of GUI and graphics frameworks,
you must install it along with additional dependencies for your desired backend.
See the installation guide for
complete details.
To just get started quickly using Qt and vispy:
pip install ndv[qt]
For Jupyter with vispy, (no Qt or wxPython):
pip install ndv[jup]
Documentation
For more information, and complete API reference, see the
documentation.