>jane*

Analyze

NumPy Array

Open a NumPy array in the browser and see what is actually in it: the values, the shape and the dtype, without starting Python. A `.npz` offers each of its arrays by name; anything with more than two dimensions gets a slider per leading axis, so you step through the stack rather than guessing. The statistics say what the numbers do — and vanish for arrays where a mean would be meaningless, instead of printing a number that is not one.

Real ligation-count matrices as .npy and .npz — shape, dtype, per-axis slicing, and a published file the viewer refuses because it is a pickle

01

What it does

  1. 01A .npy opens as its own tab: the values in a grid, with the array’s shape and dtype stated
  2. 02A .npz archive offers every array it holds, by name — both the plain and the compressed form
  3. 03Arrays with more than two dimensions get one index slider per leading axis, so you step through slices the way you would in NumPy
  4. 04The drawn window moves over a face larger than the grid, and the row and column numbers are the array’s own
  5. 05Transpose swaps the two drawn axes for a tall, narrow face
  6. 06Min, max, mean and standard deviation for numeric arrays — and deliberately absent for strings and records, where a mean would be a category error
  7. 07Every dtype NumPy writes is read: all integer and float widths in both byte orders, complex, bool, bytes, Unicode, datetime64 and timedelta64, void, and structured records including nested and sub-array fields
  8. 08Fortran-ordered arrays read in the same order NumPy reports, so a column-major file is not silently transposed
  9. 0964-bit integers stay exact rather than passing through a float
  10. 10Object-dtype arrays are refused with their reason, because NumPy stores those as a Python pickle
02

What it runs on

A TypeScript port of NumPy’s own array-format reader, written against numpy’s reference implementation rather than a description of it, and checked value-for-value against arrays that numpy wrote: 74 files spanning 63 distinct dtypes, both byte orders, C and Fortran storage, 0-dimensional through 4-dimensional shapes, empty arrays and all three header versions. The header is read without the data, so a file’s shape and dtype cost nothing however large the array; only the cells on screen are decoded. The panel runs on @ports/tensor.

Everything runs client-side. Files are parsed in the browser and projects are saved on this machine, so an unpublished sequence is never uploaded.

03

Questions

Is my array uploaded anywhere?
No. It is read in the browser from the copy stored in your project.
Why will it not open my .npy?
The most common reason is an object dtype. NumPy stores those as a Python pickle of the whole array, and unpickling runs arbitrary code — NumPy itself refuses to load one unless you pass allow_pickle=True. Re-save the array with a concrete dtype. Extended-precision floats (float96, float128) are also refused, because no JavaScript number type holds one and rounding it would silently change the value.
How much of a large array is shown?
A bounded window, and the exact rows and columns on screen are always stated — with controls to move that window anywhere in the array, so nothing is unreachable.
Does it handle arrays with more than two dimensions?
Yes. The last two axes are drawn as the grid and every leading axis becomes an index slider, which is how you would read one in NumPy: pick the slice, then look at the face.

Also searched as

open npy file online · npz viewer · view numpy array without python · inspect npy shape and dtype · read npz archive in browser · numpy array viewer online free · what is in my npy file · open a numpy file without importing numpy · view a 3d numpy array slice · npy dtype viewer