GitHub - dupontcyborg/numpy-ts: Fast, Complete NumPy for TypeScript & JavaScript

2 min read Original article โ†—

License: MIT npm version full bundle gzipped size core import gzipped size Sponsored by Cyborg

numpy api coverage validated against NumPy 2.4

numpy-ts

Complete NumPy implementation for TypeScript and JavaScript.

  • ๐Ÿ“Š Extensive API โ€” 476 of 507 NumPy functions (93.9% coverage)
  • ๐Ÿƒ๐Ÿฝโ€โ™‚๏ธ Fast โ€” 1.25x faster than NumPy on average across 7,200 benchmarks, thanks to Zig-WASM SIMD kernels
  • โœ… NumPy-validated โ€” 20,000+ tests compared against Python NumPy
  • ๐Ÿ”’ Type-safe โ€” Full TypeScript type definitions
  • ๐ŸŒณ Tree-shakeable โ€” Import only what you use (np.add() -> ~10kB bundle)
  • ๐ŸŒ Universal โ€” Zero dependencies, works in Node.js, Deno, Bun and browsers

Docs โ€ข Playground โ€ข Examples โ€ข Coverage โ€ข Benchmarks

Install

npm install numpy-ts
# or: pnpm add numpy-ts ยท yarn add numpy-ts ยท bun add numpy-ts ยท deno add npm:numpy-ts

Quick Start

import * as np from 'numpy-ts';

// Array creation with dtype support
const A = np.array([[1, 2], [3, 4]], 'float32');
const B = np.ones([2, 2], 'int32');

// Broadcasting and chained operations
const result = A.add(5).multiply(2);

// Linear algebra
const C = A.matmul(B);
const trace = A.trace();

// Reductions with axis support
const colMeans = A.mean(0);  // [2.0, 3.0]

// NumPy-style slicing with strings
const row = A.slice('0', ':');    // A[0, :]
const submatrix = A.slice('0:2', '1:');  // A[0:2, 1:]

Sponsors

numpy-ts is brought to you by

Cyborg

Interested in supporting numpy-ts? Become a sponsor.

Contributing

Issues and PRs are welcome: https://github.com/dupontcyborg/numpy-ts

AI Disclosure

See our AI disclosure for details on how AI was used in building numpy-ts.

License

MIT ยฉ Nicolas Dupont