pyapp-kit
ndv
Python

Simple, fast-loading, n-dimensional array viewer with minimal dependencies.

Last updated Jul 3, 2026
96
Stars
11
Forks
33
Issues
0
Stars/day
Attention Score
38
Language breakdown
Python 100.0%
โ–ธ Files click to expand
README

ndv

License PyPI Python Version CI codecov

Simple, fast-loading, asynchronous, n-dimensional array viewer, with minimal dependencies.

Works in Qt, Jupyter, or wxPython.

import ndv

data = ndv.data.cells3d() # or any arraylike object ndv.imshow(data)

Montage

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.

Documentation

For more information, and complete API reference, see the documentation.

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]

ยฉ 2026 GitRepoTrend ยท pyapp-kit/ndv ยท Updated daily from GitHub