NumPy Viewer
Open .npy and .npz array files in your browser. Inspect the shape and dtype, slice N-dimensional arrays with a dimension mapper, and render any 2-D slice as a heatmap, with nothing uploaded.
Free, no sign-up, and fully client-side. Your file never leaves your browser. Opens .npy, .npz.
Open the viewer and drop a file to get started.
What is a .npy file?
A .npy file is NumPy’s native format for a single array: a small text header describing the dtype, shape and memory order, followed by the raw array bytes. A .npz file is just a zip archive of several .npy arrays under names, which is how people save a handful of related arrays together.
Instead of loading the array in Python just to check its shape or glance at a slice, open it here. ViewKit reads the header, then reads only the slice you are viewing, and shows it as a table or a heatmap. Nothing is uploaded.
What you can do with the NumPy viewer
Shape & dtype
See the array’s shape, dtype and byte order at a glance.
N-dimensional slicing
Map any two axes to a table or heatmap and scrub the others; only the visible slice is materialized.
.npz archives
Open multi-array .npz files and switch between the arrays they contain. An array whose dtype cannot be shown is flagged on its own, so the rest of the archive still opens.
Many dtypes
float16, float32/64, every integer and unsigned width, complex64/128, datetime64 and timedelta64, record (structured) dtypes, booleans, strings and big-endian byte order.
How to open a NumPy file
- 1
Drop your .npy or .npz file onto the box above (or click to browse). It is read in your browser, nothing uploads.
- 2
For .npz, pick an array; for .npy the array opens directly.
- 3
Use the dimension mapper to slice an N-D array and toggle between a table and a heatmap.
Doing the same thing in code
The equivalent in NumPy:
import numpy as np
arr = np.load("data.npy", mmap_mode="r") # mmap avoids reading it all
print(arr.shape, arr.dtype)
print(arr[0, :10])
z = np.load("data.npz") # a .npz is a zip of arrays
print(z.files)If the array holds Python objects rather than numbers, np.load reads it only with allow_pickle=True, which executes code stored in the file. NumPy disables this by default. This page reads the header and numeric data without unpickling anything.
NumPy viewer: frequently asked questions
Does it open .npz archives?
Yes. A .npz is a zip of several arrays; you can open it and switch between the arrays inside.
What is the difference between .npy and .npz?
A .npy holds exactly one array: a short header giving the dtype, shape and memory order, then the raw bytes. A .npz is a zip archive containing several .npy entries under names, which is what np.savez writes. That is why a .npz asks you to pick an array first.
Why does np.load say “Object arrays cannot be loaded when allow_pickle=False”?
The file holds Python objects rather than plain numbers, so the values are pickled. Loading them requires unpickling, which executes code contained in the file, and NumPy refuses to do this by default. The header still reports the shape and dtype without reading the object data.
Which dtypes are supported?
float16, float32 and float64, signed and unsigned integers of every width, complex64 and complex128, datetime64 and timedelta64, record (structured) dtypes, booleans and fixed-length strings all render, in either byte order. Object (pickled) arrays and 128-bit longdouble cannot be shown, and are reported per array rather than failing the file.
Can it show arrays of complex numbers?
Yes. complex64 and complex128 values are formatted as a+bi and shown in the table. They have no single magnitude to colour, so the heatmap and line views stay off for them; take np.abs or np.angle first if you want to plot one.
Is my data uploaded?
No. The file is parsed entirely in your browser; its contents never leave your machine.