ndv
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)
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
widgetattribute 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.ndarraycupy.ndarraydask.array.Arrayjax.Arraypyopencl.array.Arraysparse.COOtensorstore.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.DataWrapperand 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]
Metadata
Release files for ndv 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ndv-0.5.0.tar.gz | 205.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ndv-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 365.7 kB
Release files / ndv-0.5.0.tar.gz
| Download URL | ndv-0.5.0.tar.gz |
|---|---|
| Size | 205.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
899b08f2911f83ea4a4b522c64d56ea79141bde56f02c0fe86ed2bd022b63d2a
|
|
BLAKE2b-256 checksum How to use checksums |
2476526c57540a51981e3d0e403ee76cd54500ff97c6033f554409bee3320558
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency logRelease files / ndv-0.5.0-py3-none-any.whl
| Download URL | ndv-0.5.0-py3-none-any.whl |
|---|---|
| Size | 159.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3636a33a6946c7cb378c325a4af7444b33e02502fc4d3019dcb77d84fbc95da2
|
|
BLAKE2b-256 checksum How to use checksums |
a192f322ea325276467869174119ce6567e36bb06ae231637122089fbe04d962
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency log