## Property

length

## Methods

at(index)
cosine(vec)
diag()
getMaxIdx()
inner(vec)
load(fin)
loadascii(fin)
minus(vec)
multiply(val)
norm()
normalize()

outer(vec)
plus(vec)
print()
push(val)
pushV(vec)
put(idx, val)
save(fout)
saveascii(fout)
shuffle()
sort([arg])
sortPerm([asc])

sparse()
spDiag()
splice(start, deleteCount[, ...itemN])
subVec(arg)
sum()
toArray()
toMat()
toString()
trunc(idx)
unshift(...args)

## new Vector([arg])

Vector - array of doubles.

### Example

    var la = require('qminer').la;
    // create a new empty vector
    var vec = new la.Vector();
    // create a new vector
    var vec2 = new la.Vector([1, 2, 3]);

### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
arg | (Array of number or module:la.Vector) | Yes | Constructor arguments. There are two ways of constructing: 1. using an array of vector elements. Example: using `[1, 2, 3]` creates a vector of length 3, 2. using a vector (copy constructor).

## Property

### length

Gives the length of vector. Type `number`.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var x = new la.Vector([1, 2, 3]);
    // get the length of the vector
    var len = x.length; // returns 3

## Methods

### at(index) → number

Returns element at index.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // get the element at index 1
    var el = vec[1];

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
index | number |  | Element index (zero-based).

Returns

  `number`B Vector element.

### cosine(vec) → number

Returns the cosine between the two vectors.

#### Example

    var la = require('qminer').la;
    // create two new vectors
    var x = new la.Vector([1, 0]);
    var y = new la.Vector([0, 1]);
    // calculate the cosine between those two vectors
    var num = x.cosine(y); // returns 0

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | Second vector.

Returns

  `number`B The cosine between the two vectors.

### diag()

Creates a dense diagonal matrix out of the vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([4, 5, -1]);
    // create a dense matrix with the diagonal equal to vec
    var mat = vec.diag();

### getMaxIdx() → number

Gets the index of the maximal element.

Returns

  `number`B Index of the maximal element in the vector. // import la modules var la = require('qminer').la; // create a new vector var vec = new la.Vector([1, 2, 3]); // get the index of the maximum value var idx = vec.getMaxIdx();

### inner(vec) → number

Computes the inner product.

#### Example

    var la = require('qminer').la;
    // create two new vectors
    var x = new la.Vector([1, 2, 3]);
    var y = new la.Vector([4, 5, -1]);
    // get the inner product of the two vectors
    var prod = x.inner(y); // returns 11

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | Other vector.

Returns

  `number`B Inner product between the instance and the other vector.

### load(fin) → module:la.Vector

Loads the vector from input stream (binary deserialization).

#### Example

    // import fs module
    var fs = require('qminer').fs;
    var la = require('qminer').la;
    // create an empty vector
    var vec = new la.Vector();
    // open a read stream
    var fin = fs.openRead('vec.dat');
    // load the vector
    vec.load(fin);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
fin | module:fs.FIn |  | Input stream.

Returns

  `module:la.Vector`B Self. The vector is filled using the input stream `fin`.

### loadascii(fin) → module:la.Vector

Loads the vector from input stream (ascii deserialization).

#### Example

    // import fs module
    var fs = require('qminer').fs;
    var la = require('qminer').la;
    // create an empty vector
    var vec = new la.Vector();
    // open a read stream
    var fin = fs.openRead('vec.dat');
    // load the matrix
    vec.loadascii(fin);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
fin | module:fs.FIn |  | Input stream.

Returns

  `module:la.Vector`B Self. The vector is filled using the input stream `fin`.

### minus(vec) → module:la.Vector

Vector substraction.

#### Example

    var la = require('qminer').la;
    // create two new vectors
    var x = new la.Vector([1, 2, 3]);
    var y = new la.Vector([4, 5, -1]);
    // substract the vectors
    var z = x.minus(y);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | Second vector.

Returns

  `module:la.Vector`B The difference of the instance and the other vector.

### multiply(val) → module:la.Vector

Multiplies the vector with a scalar.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var x = new la.Vector([4, 5, -1]);
    // multiply the vector with the scalar 3
    var y = x.multiply(3);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
val | number |  | Scalar.

Returns

  `module:la.Vector`B Product of the vector and scalar.

### norm() → number

Calculates the norm of the vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([4, 5, -1]);
    // get the norm of the vector
    var norm = vec.norm();

Returns

  `number`B The norm of the vector.

### normalize() → module:la.Vector

Normalizes vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var x = new la.Vector([4, 5, -1]);
    // normalize the vector
    x.normalize();

Returns

  `module:la.Vector`B Self. The vector is normalized.

### outer(vec) → module:la.Matrix

Creates a dense matrix A by multiplying two vectors x and y: `A = x * y^T`.

#### Example

    var la = require('qminer').la;
    // create two new vectors
    var x = new la.Vector([1, 2, 3]);
    var y = new la.Vector([4, 5]);
    // create the outer product of these vectors
    var A = x.outer(y); // creates the dense matrix [[4, 5], [8, 10], [12, 15]]

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | Second vector.

Returns

  `module:la.Matrix`B Matrix obtained by the outer product of the instance and second vector.

### plus(vec) → module:la.Vector

Vector addition.

#### Example

    var la = require('qminer').la;
    // create two new vectors
    var x = new la.Vector([1, 2, 3]);
    var y = new la.Vector([4, 5, -1]);
    // sum the vectors
    var z = x.plus(y);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | Second vector.

Returns

  `module:la.Vector`B Sum of the instance and the second vector.

### print()

Prints the vector on-screen.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // print the vector
    // For this example it prints:
    // [1, 2, 3]
    vec.print();

### push(val) → number

Adds an element to the end of the vector.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // push an element to the vector
    vec.push(10);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
val | number |  | The element added to the vector.

Returns

  `number`B The new length property of the object upon which the method was called.

### pushV(vec) → number

Appends a second vector to the first one.

#### Example

    // import la module
    var la = require('qminer').la;
    // create two new vectors
    var vec = new la.Vector([1, 2, 3]);
    var vec2 = new la.Vector([4, 5]);
    // append the two vectors
    vec.pushV(vec2);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
vec | module:la.Vector |  | The appended vector.

Returns

  `number`B The new length property of the vectors.

### put(idx, val) → module:la.Vector

Sets an element in vector.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // set the first element to 10
    vec.put(0, 10);

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
idx | number |  | Index (zero based).
val | number |  | Element value.

Returns

  `module:la.Vector`B Self. The values at index `idx` has been changed to `val`.

### save(fout) → module:fs.FOut

Saves the vector as output stream (binary serialization).

#### Example

    // import fs module
    var fs = require('qminer').fs;
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // open write stream
    var fout = fs.openWrite('vec.dat');
    // save vector and close write stream
    vec.save(fout).close();

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
fout | module:fs.FOut |  | Output stream.

Returns

  `module:fs.FOut`B The output stream `fout`.

### saveascii(fout) → module:fs.FOut

Saves the vector as output stream (ascii serialization).

#### Example

    // import fs module
    var fs = require('qminer').fs;
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // open write stream
    var fout = fs.openWrite('vec.dat');
    // save matrix and close write stream
    vec.saveascii(fout).close();

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
fout | module:fs.FOut |  | Output stream.

Returns

  `module:fs.FOut`B The output stream `fout`.

### shuffle() → module:la.Vector

Randomly reorders the elements of the vector (inplace).

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([-2.0, 1.0, 3.0]);
    // shuffle the elements
    vec.shuffle();

Returns

  `module:la.Vector`B Self. The elements are randomly reordered.

### sort([arg]) → module:la.Vector

Sorts the vector (in place operation).

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([-2.0, 1.0, 3.0]);
    // sort ascending
    vec.sort(); // sorts to: [-2.0, 1.0, 3.0]
    // sort using callback
    vec.sort(function(arg1, arg2) { return Math.abs(arg1) - Math.abs(arg2); }); // sorts to: [1.0, -2.0, 3.0]

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
arg | (module:la~vectorCompareCb or boolean) | Yes | Sort callback or a boolean ascend flag. Default is boolean and true.

Returns

  `module:la.Vector`B Self.
  1. Vector sorted in ascending order, if `arg` is boolean and true.
  2. Vector sorted in descending order, if `arg` is boolean and false.
  3. Vector sorted by using the comparator callback, if `arg` is a module:la~vectorCompareCb.

### sortPerm([asc]) → Object

Sorts the vector and returns the sorted vector as well as the permutation.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([-2.0, 1.0, 3.0]);
    // sort ascending
    var result = vec.sortPerm();
    result.vec;  // [-2.0, 1.0, 3.0]
    result.perm; // permutation index vector

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
asc | boolean | Yes | Sort in ascending order flag. Defaults to `true`.

Returns

  `Object`B The object `VectorSortResult` containing the properties:
  `VectorSortResult.vec` - The sorted vector,
  `VectorSortResult.perm` - Permutation vector, where `VectorSortResult.vec[i] = instanceVector[VectorSortResult.perm[i]]`.

### sparse() → module:la.SparseVector

Creates the sparse vector representation of the vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([4, 5, -1]);
    // create the sparse representation of the vector
    var spVec = vec.sparse();

Returns

  `module:la.SparseVector`B The sparse vector representation.

### spDiag() → module:la.SparseMatrix

Creates a sparse diagonal matrix out of the vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([4, 5, -1]);
    // create a sparse matrix with the diagonal equal to vec
    var mat = vec.spDiag();

Returns

  `module:la.SparseMatrix`B Diagonal matrix, where the (i, i)-th element is the i-th element of vector.

### splice(start, deleteCount[, ...itemN]) → module:la.Vector

Changes the vector by removing and adding elements.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // splice the vector by removing the last two elements and adding 4, 5
    vec.splice(1, 2, 4, 5)// returns vector [1, 4, 5]

#### Parameters

Name | Type | Optional | Description
--- | --- | --- | ---
start | number |  | Index at which to start changing the array.
deleteCount | number |  | Number of elements to be removed.
itemN | number | Yes | The element(s) to be add to the array. If no elements are given, splice() will only remove elements from the array. Value can be repeated.

Returns

  `module:la.Vector`B Self. The selected elements are removed/replaced.

### subVec(arg) → module:la.Vector

Returns a subvector.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // get the subvector of the first two elements
    var subvec = vec.subVec([0, 1]);

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
arg | (Array of number or module:la.IntVector) |  | Index array or vector. Indices can repeat (zero based).

Returns

  `module:la.Vector`B Subvector, where the i-th element is the `arg[i]`-th element of the instance.

### sum() → number

Sums the elements in the vector.

#### Example

    // import la modules
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // sum all the elements of the vector
    var sum = vec.sum();

Returns

  `number`B The sum of all elements in the instance.

### toArray() → Array of number

Copies the vector into a JavaScript array of numbers.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // create a JavaScript array out of vec
    var arr = vec.toArray(); // returns an array [1, 2, 3]

Returns

  `Array of number`B A JavaScript array of numbers.

### toMat() → module:la.Matrix

Creates a matrix with a single column that is equal to the vector.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([4, 5, -1]);
    // create a matrix representation of the vector
    var mat = vec.toMat();

Returns

  `module:la.Matrix`B The matrix with a single column that is equal to the instance.

### toString() → string

Returns the vector as string.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // create vector as string
    vec.toString(); // returns '1, 2, 3'

Returns

  `string`B String representation.

### trunc(idx) → module:la.Vector

Deletes elements with sprecific index or more.

#### Example

    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // trunc all elements with index 1 or more
    vec.trunc(1); // returns vector [1]

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
idx | number |  | Index (zero based).

Returns

  `module:la.Vector`B Self after truncating.

### unshift(...args) → number

Adds elements to the beginning of the vector.

#### Example

    // import la module
    var la = require('qminer').la;
    // create a new vector
    var vec = new la.Vector([1, 2, 3]);
    // add two elements to the beggining of the vector
    var len = vec.unshift(4, 5); // returns 5

#### Parameter

Name | Type | Optional | Description
--- | --- | --- | ---
args | number |  | One or more elements to be added to the vector. Value can be repeated.

Returns

  `number`B The new length of vector.