jane* docs
Analyze

NumPy Array

Reached byTools → Analyze

What it does

Opens a NumPy array — a .npy file, or one array out of a .npz archive — as a real tab, so you can see the numbers, the shape and the dtype without starting Python.

When you'd use this

A collaborator sends a .npz, or a pipeline drops an array next to its outputs, and the first question is always the same: what is actually in this? Shape, dtype, and whether the values look like what you expected. That is a two-minute round trip through a Python session, and this replaces it — open the file and read it, in the project that already holds the sequences and tables the array belongs to.

It is also the honest way to check an array you produced: a count matrix that should be symmetric, a distance map whose diagonal should be zero, a stack whose slices should differ.

What this computes

The array as NumPy stored it, without starting Python.

  • Shape, dtype and storage order, and the values themselves: the last two axes drawn as a grid, every leading axis becoming an index slider — which is how you would read the array in NumPy, pick the slice then look at the face
  • Row and column numbers that are the array's own, so an index copied off the grid works in your code
  • Statistics for numeric arrays — and deliberately absent for strings and records, because a mean over a column of names is a category error, not a small number
  • Every dtype NumPy writes: all integer and float widths in both byte orders, complex, bool, fixed-width bytes and Unicode, datetime64 and timedelta64, void, and structured records including nested and sub-array fields. .npy format versions 1.0, 2.0 and 3.0, and .npz stored or compressed
  • Two refusals it will not guess at, each with its reason on screen: an object dtype, which NumPy stores as a pickle and cannot be read without executing arbitrary code (NumPy itself refuses without allow_pickle=True), and extended-precision floats, which no JavaScript number can hold without silently rounding. A file over 128 MB is refused with its size stated

Where it lives

Tools → Analyze → Open NumPy Array, or the command palette. It also opens straight from the Files rail and the file manager when you click a .npy or .npz, and the file manager previews one in place without opening a tab. Picking a file from another project copies it into the open one, so the tab survives a reload.

Inputs and outputs

Takes .npy (format versions 1.0, 2.0 and 3.0) and .npz (stored or compressed). Every dtype NumPy writes is read — all integer and float widths in both byte orders, complex, bool, fixed-width bytes and Unicode, datetime64 and timedelta64, void, and structured records including nested and sub-array fields.

It refuses, with the reason on screen, two cases it will not guess at: an object dtype, which NumPy stores as a Python pickle and which cannot be read without executing arbitrary code (NumPy itself refuses these without allow_pickle=True), and extended-precision floats, which no JavaScript number type can hold without silently rounding. Files over 128 MB are refused with the size stated.

There is no output file: this is a reader.

How to read the result

The last two axes are drawn as a grid and every leading axis becomes an index slider, which is how you would read the array in NumPy: pick the slice, then look at the face. The row and column numbers are the array's own, so an index you copy off the grid works in your own code. Statistics appear for numeric arrays and are deliberately absent for strings and records — a mean over a column of names is a category error rather than a small number.

Full detail on reading one, including the storage-order and integer-exactness rules: the tensor canvas.

Sits beside the table viewer — the same question ("what is in this file") for a different shape of answer.

On this page