• Stars
    star
    920
  • Rank 49,655 (Top 1.0 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Linear algebra in TypeScript.

Vectorious Logo

A linear algebra library, written in TypeScript and accelerated with C++ bindings to BLAS and LAPACK.

Installation

Follow the installation instructions in nlapack and nblas to get maximum performance.

# with C++ bindings
$ npm install vectorious

# or, if you don't want C++ bindings
$ npm install vectorious --no-optional

There are three output bundles exposed in this package.

CommonJS

A node.js bundle, can be found in dist/index.js and imported with the require() syntax:

const v = require('vectorious');

Browser

A browser bundle, can be found in dist/index.browser.js and imported with the <script> tag:

<script src="dist/index.browser.js" />

It exposes a global variable named v in the window object and can be accessed like this:

<script>
  const x = v.array([1, 2, 3]);
</script>

ES module

Added in version 6.1.0, vectorious exposes an ES module bundle at dist/index.esm.js which can be imported using the import syntax:

import { array } from 'vectorious';

const x = array([1, 2, 3]);

Usage

Unless stated otherwise, all operations are in-place, meaning that the result of the operation overwrites data in the current (or in the static case leftmost) array. To avoid this, an explicit copy call is needed before the operation (copy(x) or x.copy()).

import { array, random, range } from 'vectorious';

// Create a random 2x2 matrix
const x = random(2, 2);
/*
array([
  [
    0.26472008228302,
    0.4102575480937958
  ],
  [
    0.4068726599216461,
    0.4589384198188782
  ]
], dtype=float64)
*/

// Create a one-dimensional vector with values from
// 0 through 8 and reshape it into a 3x3 matrix
const y = range(0, 9).reshape(3, 3);
/*
array([
  [ 0, 1, 2 ],
  [ 3, 4, 5 ],
  [ 6, 7, 8 ]
], dtype=float64)
*/

// Add the second row of x to the first row of x
y.slice(0, 1).add(y.slice(1, 2));
/*
array([
  [ 3, 5, 7 ],
  [ 3, 4, 5 ],
  [ 6, 7, 8 ]
], dtype=float64)
*/

// Swap the first and second rows of x
y.swap(0, 1);
/*
array([
  [ 3, 4, 5 ],
  [ 3, 5, 7 ],
  [ 6, 7, 8 ]
], dtype=float64)
*/

// Create a 2x2x1 tensor
const z = array([
  [[1], [2]],
  [[3], [4]],
]);
/*
array([
  [ [ 1 ], [ 2 ] ],
  [ [ 3 ], [ 4 ] ]
], dtype=float64)
*/

Documentation

Examples

Basic

Machine learning

Testing

All functions are accompanied with a .spec.ts file.

The Jest testing framework is used for testing and the whole test suite can be run using a single command:

$ npm test

Benchmarks

All functions are accompanied with a .bench.ts file.

Run all benchmarks with:

$ npm run benchmark

Or for a single function with:

$ npx ts-node src/core/abs.bench.ts

More Repositories

1

ocr

Neural network OCR.
JavaScript
1,130
star
2

sshync

Auto-sync files or directories over SSH.
JavaScript
818
star
3

issuance

Blogging with Github Issues.
HTML
242
star
4

hopfield-colors

Trains a Hopfield recurrent neural network to recognize colors and uses it to interpret images.
JavaScript
131
star
5

cryptochat

Encrypted P2P chat over ICMP.
JavaScript
80
star
6

keyword-miner

Extract a list of keywords from a website, sorted by word count.
JavaScript
51
star
7

matplotnode

C++ bindings for Node.js exposing a subset of matplotlib's functionality through the CPython API.
C++
39
star
8

waves-js

Wave-like text animation in pure JavaScript
CSS
26
star
9

cdefs

Describe C function prototypes in JSON.
C
24
star
10

scrabbler

Efficiently generates all valid english words from a given combination of letters and scores them according to scrabble rules
JavaScript
22
star
11

griderator

node.js grid generator
JavaScript
20
star
12

wordnet-visualization

A visualisation of the Princeton WordNet database
JavaScript
15
star
13

domp

Web scraping, crawling and DOM tree manipulation for Node.js.
JavaScript
14
star
14

walk-js

walk traversal
JavaScript
9
star
15

pixels

Image processing library
JavaScript
7
star
16

rexer

Generate matching strings from regular expressions.
JavaScript
6
star
17

blockman

Block-based array manipulation.
JavaScript
5
star
18

benchmaster

Benchmark.js wrapper for quick Node.js benchmarking.
JavaScript
5
star
19

concept-extractor

A method of comparing a website's content with a specified concept.
JavaScript
5
star
20

neuroviz

Visualize neural networks with matrix heatmaps
HTML
4
star