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]