JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17
  • Score
    100M100P100Q83628F
  • License ISC

A package for doing matrix arithmetic with JavaScript arrays

Package Exports

  • matrixops

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (matrixops) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

#MatrixOps

MatrixOps is an npm package that makes performing matrix operations on 2 dimensional JavaScript arrays simple. It also provides some convenience methods similar to what might be found in a statistical language like MATLAB or Octave.

Usage

To install matrixops, simply run:

  npm install matrixops

#add

Accepts 2-dimensional arrays, 1-dimensional arrays, and numbers, and adds them together, returning a new array.

  const MatrixOps = require('matrixops');

  MatrixOps.add([[1, 2], [3, 4]], 5);
  // => [[6, 7], [8, 9]]

  MatrixOps.add([[1, 2], [3, 4]], [[1, 2], [3, 4]]);
  // => [[2, 4], [6, 8]]

#subtract

Accepts 2-dimensional arrays, 1-dimensional arrays, and numbers, and subtracts the second argument from the first, returning a new array.

  MatrixOps.subtract([[1, 2], [3, 4]], [[1, 2], [3, 4]]);
  // => [[0, 0], [0, 0]]

  MatrixOps.subtract([3, 4], [1, 2]);
  // => [2, 2]

#multiply

Accepts 2-dimensional arrays, 1-dimensional arrays, and numbers, and multiplies them together, returning a new array.

  MatrixOps.multiply([[1, 2, 3], [4, 5, 6]], [[1,2],[3,4],[5,6]]);
  // => [[22, 28], [49, 64]]

  MatrixOps.multiply([[1, 2, 3], [4, 5, 6]], [[1],[2],[3]]);
  // => [[14], [32]]

  MatrixOps.multiply([[1,2],[3,4]], 2);
  // => [[2, 4], [6, 8]]

#transpose

Accepts a 2-dimensional or 1-dimensional array and returns its transpose.

  MatrixOps.transpose([1, 2, 3]);
  // => [[1], [2], [3]]

  MatrixOps.transpose([[[1, 2], [3, 4], [5, 6]]);
  // => [[1, 3, 5], [2, 4, 6]]

#elementTransform

Accepts a 1 or 2-dimensional array and a callback function, and applies the callback to every element of the array. The callback function accepts up to 3 arguments: the element, the row index, and the column index.

  MatrixOps.elementTransform([[1, 2], [3, 4]], el => el * 2);
  // => [[2, 4], [6, 8]]

  MatrixOps.elementTransform([[1, 2], [3, 4]], el => Math.pow(el, 2));
  // => [[1, 4], [9, 16]]

  MatrixOps.elementTransform([[1, 2], [3, 4]], (el, row, col) => {
    return el * 2 + col + row;
  });
  // => [[2, 5], [7, 10]]

#elByElCalc

Accepts 2 arrays with the same dimensions and a callback, and applies the callback to pairs of elements at the same indices in the two arrays. The callback function accepts up to 4 arguments: the matrix 1 element at the position, the matrix 2 element at the position, the row index, and the column index.

  MatrixOps.elByElCalc([[1, 2], [3, 4]], [[1, 2], [3, 4]], (el1, el2) => el1 * el2);
  // => [[1, 4], [9, 16]]

  MatrixOps.elByElCalc([1, 2, 3], [1, 2, 3], (el1, el2) => el1 * el2);
  // => [[1, 4, 9]

  MatrixOps.elByElCalc([[1, 2], [3, 4]], [[1, 2], [3, 4]], (el1, el2, row, col) => {
    return el1 * el2 + row + col;
  });
  // => [[1, 5], [10, 18]]

#zeroes

Accepts 1 or 2 numbers and returns an array of zeroes with the specified dimensions. The second dimension defaults to 1 if no second number is given.

  MatrixOps.zeroes(2, 3);
  // => [[0, 0, 0], [0, 0, 0]]

  MatrixOps.zeroes(2));
  // => [[0], [0]]

#ones

Accepts 1 or 2 numbers and returns an array of ones with the specified dimensions. The second dimension defaults to 1 if no second number is given.

  MatrixOps.ones(2, 3);
  // => [[1,1,1], [1,1,1]]

  MatrixOps.ones(2));
  // => [[1], [1]]

#identity

Accepts a number n and returns an n x n identity matrix

  MatrixOps.identity(3);
  // => [[1, 0, 0], [0, 1, 0], [0, 0, 1]]

#equals

Accepts two matrices or vectors, and returns true if all elements at the same position are equal

  const a = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
  ]

  const b = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
  ]

  MatrixOps.equals(a, b)
  // => true

  const c = [1, 2, 3]
  const d = [1, 2, 4]

  MatrixOps.equals(c, d)
  // => false

rowMeans

Accepts a matrix and returns the mean of each row as an array.

  const a = [
    [1, 2, 3],
    [1, 2, 3],
    [1, 2, 3]
  ]

  MatrixOps.rowMeans(a);
  // => [ 2, 2, 2 ]

colMeans

Accepts a matrix and returns the mean of each column as an array.

  const a = [
    [1, 2, 3],
    [1, 2, 3],
    [1, 2, 3],
  ]

  MatrixOps.colMeans(a);
  // => [1, 2, 3]

rowStdDevs

Accepts a matrix and returns the standard deviation of each row as an array.

  const a = [
    [1, 5],
    [9, 13]
  ]

  MatrixOps.rowStdDevs(a);
  // => [2, 2]

colStdDevs

Accepts a matrix and returns the standard deviation of each column as an array.

const a = [
  [1, 9],
  [7, 15]
]

  MatrixOps.colStdDevs(a);
  // => [3, 3]