matrixops

1.2.5 • Public • Published

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]

Package Sidebar

Install

npm i matrixops

Weekly Downloads

1

Version

1.2.5

License

ISC

Last publish

Collaborators

  • johngoddard