qminer
Version:
A C++ based data analytics platform for processing large-scale real-time streams containing structured and unstructured data
620 lines (616 loc) • 25.7 kB
HTML
<html>
<head>
<meta name="generator" content="JSDoc 3">
<meta charset="utf-8">
<title>Class: SparseVector</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
<link href="css/baseline.css" rel="stylesheet">
</head>
<body onload="prettyPrint()">
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">QMiner JavaScript API v9.4.0</a>
</div>
</div>
</nav>
<div id="jsdoc-body-container">
<div id="jsdoc-content">
<div id="jsdoc-content-container">
<div id="jsdoc-main" role="main">
<header class="page-header">
<div class="symbol-detail-labels"><span class="label label-kind">class</span> <span class="label label-static">static</span></div>
<h1><small><a href="module-la.html">la</a>.<wbr></small><span class="symbol-name">SparseVector</span></h1>
<p class="source-link">Source: <a href="ladoc.js.html#source-line-525">ladoc.<wbr>js:525</a></p>
<div class="symbol-classdesc">
<p>Sparse vector is an array of (int,double) pairs that represent column indices and values.</p>
</div>
<dl class="dl-compact">
</dl>
</header>
<section id="summary">
<div class="summary-callout">
<h2 class="summary-callout-heading">Properties</h2>
<div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="module-la.SparseVector.html#dim">dim</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="module-la.SparseVector.html#nnz">nnz</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
</div>
</div>
</div>
<div class="summary-callout">
<h2 class="summary-callout-heading">Methods</h2>
<div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="module-la.SparseVector.html#at">at(idx)</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#full">full()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#idxVec">idxVec()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#inner">inner(arg)</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="module-la.SparseVector.html#multiply">multiply(num)</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#norm">norm()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#normalize">normalize()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#print">print()</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="module-la.SparseVector.html#put">put(idx, num)</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#sum">sum()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#toString">toString()</a></dt>
<dd>
</dd>
<dt><a href="module-la.SparseVector.html#valVec">valVec()</a></dt>
<dd>
</dd>
</dl>
</div>
</div>
</div>
</section>
<section>
<h2 id="SparseVector">new <span class="symbol-name">SparseVector</span><span class="signature"><span class="signature-params">([arg][, dim])</span></span></h2>
<p>Sparse Vector.</p>
<section>
<h3>
Example
</h3>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create new sparse vector with arrays
var spVec = new la.SparseVector([[0, 1], [2, 3], [3, 6]]); // sparse vector [1, 0, 3, 6]
// create new sparse vector with dim
var spVec2 = new la.SparseVector([[0, 1], [2, 3], [3, 6]], 5); // largest index (zero based) is 4</code></pre>
</div>
</section>
<section>
<h3>Parameters</h3>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>arg</p>
</td>
<td>
<p>(Array of Array of number or <a href="module-la.SparseVector.html">module:la.SparseVector</a>)</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Constructor arguments. There are two ways of constructing:
<br>1. Using a nested array of vector elements. Example: <code>[[0, 2],[2, 3]]</code> has two nonzero values, first value is 2 at position 0, second value is 3 at position 2,
<br>2. using a sparse vector (copy constructor).
</p>
</td>
</tr>
<tr>
<td>
<p>dim</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Maximum length of sparse vector. <i>It is only in combinantion with nested array of vector elements.</i></p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
</dl>
</section>
<section>
<h2>Properties</h2>
<section>
<h3 id="dim"><span class="symbol-name">dim</span></h3>
<p>Returns the dimension of sparse vector. Type <code>number</code>.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector and designate the dimension of the vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]], 15);
// get the dimension of the sparse vector
// returns 15
var dim = vec.dim;</code></pre>
</div>
</section>
<dl class="dl-compact">
</dl>
<h3 id="nnz"><span class="symbol-name">nnz</span></h3>
<p>Returns the number of non-zero values. Type <code>number</code>.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]]);
// check the number of nonzero values in sparse vector
// returns 4
var nonz = vec.nnz;</code></pre>
</div>
</section>
<dl class="dl-compact">
</dl>
</section>
<h2>Methods</h2>
<section>
<h3 id="at"><span class="symbol-name">at</span><span class="signature"><span class="signature-params">(idx)</span> → <span class="signature-returns"> number</span></span></h3>
<p>Returns an element of the sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a sparse vector
var vec = new la.SparseVector([[0, 1], [3, 2], [4, -5]]);
// get the value at the position 3
vec.at(3); // returns the value 2</code></pre>
</div>
</section>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>idx</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p> </p>
</td>
<td>
<p>Index (zero based).</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>number</code>B Sparse vector element.</p>
</dd>
</dl>
<h3 id="full"><span class="symbol-name">full</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3>
<p>Returns the dense vector representation of the sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]]);
// create a dense representation of the vector
var dense = vec.full();</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B The dense vector representation.</p>
</dd>
</dl>
<h3 id="idxVec"><span class="symbol-name">idxVec</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3>
<p>Returns a dense vector of indices (zero based) of non-zero elements of sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sprase vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]]);
// get the non-zero indeces of the sparse vector
var idxVec = vec.idxVec();</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B A dense vector of indeces.</p>
</dd>
</dl>
<h3 id="inner"><span class="symbol-name">inner</span><span class="signature"><span class="signature-params">(arg)</span> → <span class="signature-returns"> number</span></span></h3>
<p>Returns the inner product of the parameter and the sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create two vectors, one sparse and one dense
var sparse = new la.SparseVector([[0, 1], [3, 2], [4, -5]]);
var dense = new la.Vector([3, -4, 2, 0.5, -1]);
// get the inner product of the vectors
sparse.inner(dense); // returns the value 9</code></pre>
</div>
</section>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>arg</p>
</td>
<td>
<p>(<a href="module-la.Vector.html">module:la.Vector</a> or <a href="module-la.SparseVector.html">module:la.SparseVector</a>)</p>
</td>
<td>
<p> </p>
</td>
<td>
<p>The inner product input.</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>number</code>B The inner product of the two vectors.</p>
</dd>
</dl>
<h3 id="multiply"><span class="symbol-name">multiply</span><span class="signature"><span class="signature-params">(num)</span> → <span class="signature-returns"> <a href="module-la.SparseVector.html">module:la.SparseVector</a></span></span></h3>
<p>Multiplies the sparse vector with a scalar.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var spVec = new la.SparseVector([[0, 1], [2, 3], [3, 6]]);
// multiply sparse vector with scalar 3.14
var spVec2 = spVec.multiply(3.14); // returns sparse vector [3.14, 0, 9.42, 18.84]</code></pre>
</div>
</section>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>num</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p> </p>
</td>
<td>
<p>The scalar.</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.SparseVector.html">module:la.SparseVector</a></code>B The product of <code>num</code> and sparse vector.</p>
</dd>
</dl>
<h3 id="norm"><span class="symbol-name">norm</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> number</span></span></h3>
<p>Returns the norm of sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]]);
// get the norm of the vector
var norm = vec.norm();</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>number</code>B Norm of sparse vector.</p>
</dd>
</dl>
<h3 id="normalize"><span class="symbol-name">normalize</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> <a href="module-la.SparseVector.html">module:la.SparseVector</a></span></span></h3>
<p>Normalizes the sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var spVec = new la.SparseVector([[0, 1], [2, 3], [3, 6]]);
// normalize the sparse vector
spVec.normalize();</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.SparseVector.html">module:la.SparseVector</a></code>B Self. The vector is normalized.</p>
</dd>
</dl>
<h3 id="print"><span class="symbol-name">print</span><span class="signature"><span class="signature-params">()</span></span></h3>
<p>Prints the sparse vector on-screen.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var spVec = new la.SparseVector([[0, 1], [2, 3]]);
// print sparse vector
spVec.print(); // shows on-screen [(0, 1), (2, 3)]</code></pre>
</div>
</section>
<dl class="dl-compact">
</dl>
<h3 id="put"><span class="symbol-name">put</span><span class="signature"><span class="signature-params">(idx, num)</span> → <span class="signature-returns"> <a href="module-la.SparseVector.html">module:la.SparseVector</a></span></span></h3>
<p>Puts a new element in sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 1], [3, 2], [4, -5]]);
// set the new values at position 2
vec.put(2, -4);</code></pre>
</div>
</section>
<section>
<h4>Parameters</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>idx</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p> </p>
</td>
<td>
<p>Index (zero based).</p>
</td>
</tr>
<tr>
<td>
<p>num</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p> </p>
</td>
<td>
<p>Input value.</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.SparseVector.html">module:la.SparseVector</a></code>B Self. It puts/changes the values with the index <code>idx</code> to the value <code>num</code>.</p>
</dd>
</dl>
<h3 id="sum"><span class="symbol-name">sum</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> number</span></span></h3>
<p>Returns the sum of all values in sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 1], [3, 2], [4, -5]]);
// get the sum of the values in the vector
vec.sum(); // returns -2</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>number</code>B The sum of all values in sparse vector.</p>
</dd>
</dl>
<h3 id="toString"><span class="symbol-name">toString</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> string</span></span></h3>
<p>Returns the string representation.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var spVec = new la.SparseVector([[0, 1], [2, 3]]);
// get the string representation of the vector
spVec.toString(); // returns the string '[(0, 1), (2, 3)]'</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>string</code>B The string representation of the sparse vector.</p>
</dd>
</dl>
<h3 id="valVec"><span class="symbol-name">valVec</span><span class="signature"><span class="signature-params">()</span> → <span class="signature-returns"> <a href="module-la.Vector.html">module:la.Vector</a></span></span></h3>
<p>Returns a dense vector of values of non-zero elements of sparse vector.</p>
<section>
<h4>
Example
</h4>
<div>
<pre class="prettyprint"><code>// import la module
var la = require('qminer').la;
// create a new sparse vector
var vec = new la.SparseVector([[0, 2], [3, 1], [7, 5], [11, 4]]);
// get the non-zero values of the sparse vector
var valVec = vec.valVec();</code></pre>
</div>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code><a href="module-la.Vector.html">module:la.Vector</a></code>B A dense vector of values.</p>
</dd>
</dl>
</section>
</section>
</div>
</div>
<nav id="jsdoc-toc-nav" role="navigation"></nav>
</div>
</div>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
</p>
</div>
</footer>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/tree.jquery.js"></script>
<script src="scripts/prettify.js"></script>
<script src="scripts/jsdoc-toc.js"></script>
<script src="scripts/linenumber.js"></script>
<script src="scripts/scrollanchor.js"></script>
</body>
</html>