Skip to main content

Documentation Index

Fetch the complete documentation index at: https://numpyts.dev/llms.txt

Use this file to discover all available pages before exploring further.

All decomposition functions live under the linalg namespace. Access them as np.linalg.eig(...), np.linalg.svd(...), etc.

linalg.eig

Compute the eigenvalues and right eigenvectors of a square matrix. For each eigenvalue w[i], the corresponding eigenvector is the column v[:, i].
function linalg.eig(a: ArrayLike): { w: NDArray; v: NDArray; }
NameTypeDefaultDescription
aArrayLikeInput square matrix or batch of matrices with shape [..., n, n].
Returns: { w, v } — Object where w has shape [..., n] (eigenvalues) and v has shape [..., n, n] (eigenvectors). The column v[:, i] is the eigenvector corresponding to w[i].
import * as np from 'numpy-ts';

const A = np.array([[1, -1], [1, 1]]);

const { w, v } = np.linalg.eig(A);
console.log(w.shape);    // [2]
console.log(v.shape);    // [2, 2]

// Batch: apply eig to two 3×3 matrices at once
const batch = np.zeros([2, 3, 3]);
// ... fill batch ...
const { w: batchW } = np.linalg.eig(batch);
console.log(batchW.shape);  // [2, 3]

linalg.eigh

Compute eigenvalues and eigenvectors of a symmetric (Hermitian) matrix. The eigenvalues are returned in ascending order. This is faster than eig for symmetric matrices and guarantees real eigenvalues.
function linalg.eigh(a: ArrayLike, UPLO?: 'L' | 'U'): { w: NDArray; v: NDArray; }
NameTypeDefaultDescription
aArrayLikeInput symmetric matrix or batch of matrices with shape [..., n, n].
UPLO'L' | 'U''L'Whether to use the lower ('L') or upper ('U') triangle of a.
Returns: { w, v } — Object where w has shape [..., n] containing eigenvalues in ascending order and v has shape [..., n, n] containing orthonormal eigenvectors.
import * as np from 'numpy-ts';

const A = np.array([[2, 1], [1, 3]]);

const { w, v } = np.linalg.eigh(A);
console.log(w.toArray());  // eigenvalues in ascending order
console.log(v.shape);      // [2, 2]

linalg.eigvals

Compute the eigenvalues of a square matrix. This is equivalent to linalg.eig but only returns eigenvalues, which can be more efficient when eigenvectors are not needed.
function linalg.eigvals(a: ArrayLike): NDArray
NameTypeDefaultDescription
aArrayLikeInput square matrix or batch of matrices with shape [..., n, n].
Returns: NDArray — Array of eigenvalues with shape [..., n] (may be complex-valued).
import * as np from 'numpy-ts';

const A = np.array([[1, 2], [3, 4]]);

const w = np.linalg.eigvals(A);
console.log(w.shape);  // [2]

linalg.eigvalsh

Compute the eigenvalues of a symmetric (Hermitian) matrix. Returns eigenvalues only, sorted in ascending order.
function linalg.eigvalsh(a: ArrayLike, UPLO?: 'L' | 'U'): NDArray
NameTypeDefaultDescription
aArrayLikeInput symmetric matrix or batch of matrices with shape [..., n, n].
UPLO'L' | 'U''L'Whether to use the lower or upper triangle.
Returns: NDArray — Array of real eigenvalues with shape [..., n] in ascending order.
import * as np from 'numpy-ts';

const A = np.array([[5, 2], [2, 8]]);

const w = np.linalg.eigvalsh(A);
console.log(w.toArray());  // eigenvalues in ascending order

linalg.svd

Compute the singular value decomposition (SVD) of a matrix. Factors the matrix a as U @ diag(S) @ Vh.
function linalg.svd(
  a: ArrayLike,
  full_matrices?: boolean,
  compute_uv?: boolean
): { u: NDArray; s: NDArray; vt: NDArray; } | NDArray
NameTypeDefaultDescription
aArrayLikeInput matrix of shape [M, N].
full_matricesbooleantrueIf true, U is [M, M] and Vh is [N, N]. If false, U is [M, K] and Vh is [K, N] where K = min(M, N).
compute_uvbooleantrueIf false, return only singular values.
Returns: { u, s, vt } when compute_uv is true, where u contains left singular vectors, s contains singular values (descending), and vt contains right singular vectors (conjugate-transposed). Returns NDArray of singular values when compute_uv is false.
import * as np from 'numpy-ts';

const A = np.array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]);

const { u, s, vt } = np.linalg.svd(A);
console.log(s.toArray());  // [3, 2, 1]

// Reduced SVD
const { u: ur, s: sr, vt: vtr } = np.linalg.svd(A, false);
console.log(ur.shape);   // [3, 3]
console.log(sr.shape);   // [3]
console.log(vtr.shape);  // [3, 3]

const sOnly = np.linalg.svd(A, true, false);
console.log(sOnly.shape); // [3]

linalg.svdvals

Compute the singular values of a matrix. This is equivalent to linalg.svd but only returns the singular values, which can be more efficient.
function linalg.svdvals(a: ArrayLike): NDArray
NameTypeDefaultDescription
aArrayLikeInput matrix.
Returns: NDArray — 1-D array of singular values in descending order.
import * as np from 'numpy-ts';

const A = np.array([[1, 2], [3, 4]]);

const s = np.linalg.svdvals(A);
console.log(s.shape);  // [2]

linalg.qr

Compute the QR decomposition of a matrix. Factors the matrix a as Q @ R, where Q is orthogonal and R is upper triangular.
function linalg.qr(
  a: ArrayLike,
  mode?: 'reduced' | 'complete' | 'r' | 'raw'
): { q: NDArray; r: NDArray; } | NDArray | { h: NDArray; tau: NDArray; }
NameTypeDefaultDescription
aArrayLikeInput matrix of shape [M, N].
mode'reduced' | 'complete' | 'r' | 'raw''reduced'If 'reduced'/'complete', returns { q, r }. If 'r', returns only R. If 'raw', returns { h, tau }.
Returns: { q, r } for 'reduced'/'complete', NDArray for 'r', and { h, tau } for 'raw'.
import * as np from 'numpy-ts';

const A = np.array([[1, 2], [3, 4], [5, 6]]);

// Reduced QR (default)
const { q, r } = np.linalg.qr(A);
console.log(q.shape);  // [3, 2]
console.log(r.shape);  // [2, 2]

// Complete QR
const { q: qf, r: rf } = np.linalg.qr(A, 'complete');
console.log(qf.shape);  // [3, 3]
console.log(rf.shape);  // [3, 2]

linalg.cholesky

Compute the Cholesky decomposition of a positive-definite symmetric matrix. Returns the lower-triangular matrix L such that a = L @ L.T.
function linalg.cholesky(a: ArrayLike, upper?: boolean): NDArray
NameTypeDefaultDescription
aArrayLikeInput positive-definite matrix or batch of matrices with shape [..., n, n].
upperbooleanfalseIf true, compute upper-triangular factor instead of lower-triangular.
Returns: NDArray of shape [..., n, n] — Lower-triangular Cholesky factor L. Throws: Error if the matrix is not positive definite.
import * as np from 'numpy-ts';

const A = np.array([[4, 2], [2, 3]]);

const L = np.linalg.cholesky(A);
// array([[2, 0],
//        [1, 1.41421356]])

// Verify: L @ L.T ≈ A
const reconstructed = np.matmul(L, L.T);

// Batch Cholesky for two 3×3 SPD matrices
const batch = np.eye(3).reshape([1, 3, 3]).repeat(2, 0);
const batchL = np.linalg.cholesky(batch);
console.log(batchL.shape);  // [2, 3, 3]