scijs / ndarray

📈 Multidimensional arrays for JavaScript
MIT License
1.21k stars 61 forks source link

How to convert an ndarray back to a buffer/array/…? #29

Open mathiasbynens opened 8 years ago

mathiasbynens commented 8 years ago

How to convert an ndarray back to a buffer/array/…? Including all transformations, that is, so not just foo.data.

const fs = require('fs');

const ndarray = require('ndarray');
const show = require('ndarray-show');

const matrix = ndarray([
    0, 0, 0,
    1, 0, 0,
    0, 0, 0
], [3, 3]);
console.log(show(matrix, 2));
/*
 0  0  0
 1  0  0
 0  0  0
*/
console.log('-'.repeat(72));
const modified = matrix.transpose(1, 0);
console.log(show(modified, 2));
/*
 0  1  0
 0  0  0
 0  0  0
*/
console.log('-'.repeat(72));
console.log(modified.data);
/* [
 0, 0, 0,
 1, 0, 0,
 0, 0, 0
] */

// I want to somehow get the transposed matrix as an array or buffer:

/* [
    0, 1, 0,
    0, 0, 0,
    0, 0, 0
]
*/

Is there a better way than .picking and .getting each value individually and manually adding it to an array/buffer? I feel like I’m missing something obvious here…

letmaik commented 8 years ago

http://scijs.net/packages/#scijs/ndarray-unpack

mikolalysenko commented 8 years ago

You can use ndarray-ops or ndarray-unpack to do it.