UNPKG

ndarray-show

Version:
55 lines (47 loc) 1.4 kB
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'); }