ndarray-show
Version:
display an ndarray
55 lines (47 loc) • 1.4 kB
JavaScript
var showf = require('fixed-width-float');
var ndarray = require('ndarray');
module.exports = function (m, opts) {
if (!opts) opts = {};
if (typeof opts === 'number') opts = { width: opts };
if (!opts.width) opts.width = 8;
if (m.dimension === undefined) {
m = ndarray(m);
}
if (m.dimension === 1) return d1(m, opts);
if (m.dimension === 2) return d2(m, opts);
if (m.dimension === 3) return d3(m, opts);
if (m.dimension === 4) return d4(m, opts);
};
function d1 (m, opts) {
var terms = [];
for (var i = 0; i < m.shape[0]; i++) {
terms.push(showf(m.get(i), opts.width));
}
return terms.join(' ');
}
function d2 (m, opts) {
var rows = [];
for (var y = 0; y < m.shape[0]; y++) {
rows.push(d1(m.pick(y, null), opts));
}
return rows.join('\n');
}
function d3 (m, opts) {
var rows = [];
for (var z = 0; z < m.shape[0]; z++) {
rows.push(d2(m.pick(z, null, null), opts), '');
}
return rows.join('\n');
}
function d4 (m, opts) {
var rows = [], len = 3
for (var w = 0; w < m.shape[0]; w++) {
var r = d3(m.pick(w, null, null, null), opts)
rows.push(r);
var lines = r.split('\n');
for (var i = 0; i < lines.length; i++) {
len = Math.max(len, lines[i].length);
}
}
return rows.join('\n' + Array(len+1).join('-') + '\n\n');
}