matrixops
v1.2.5
Published
A package for doing matrix arithmetic with JavaScript arrays
Downloads
1,230
Maintainers
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]