4.0 KiB
4.0 KiB
ndarray2array
Convert an ndarray buffer to a generic array.
Usage
var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
ndarray2array( buffer, shape, strides, offset, order )
Converts an ndarray buffer to a generic array (which may include nested arrays).
var buffer = [ 1, 2, 3, 4 ];
var shape = [ 2, 2 ];
var order = 'row-major';
var strides = [ 2, 1 ];
var offset = 0;
var arr = ndarray2array( buffer, shape, strides, offset, order );
// returns [ [ 1, 2 ], [ 3, 4 ] ]
The order
parameter specifies whether an array is row-major
(C-style) or column-major
(Fortran-style).
var buffer = [ 1, 2, 3, 4 ];
var shape = [ 2, 2 ];
var order = 'column-major';
var strides = [ 1, 2 ];
var offset = 0;
var arr = ndarray2array( buffer, shape, strides, offset, order );
// returns [ [ 1, 3 ], [ 2, 4 ] ]
The offset
parameter specifies the location of the first indexed element based on the strides
array.
var buffer = [ 1, 2, 3, 4 ];
var shape = [ 2, 2 ];
var order = 'row-major';
var strides = [ -2, -1 ];
var offset = 3;
var arr = ndarray2array( buffer, shape, strides, offset, order );
// returns [ [ 4, 3 ], [ 2, 1 ] ]
Examples
var shape2strides = require( '@stdlib/ndarray/base/shape2strides' );
var strides2offset = require( '@stdlib/ndarray/base/strides2offset' );
var dicreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
// Create a data buffer:
var buffer = [];
var i;
for ( i = 0; i < 27; i++ ) {
buffer.push( i );
}
// Specify array meta data:
var shape = [ 3, 3, 3 ];
var order = 'column-major';
var ndims = shape.length;
// Compute array meta data:
var strides = shape2strides( shape, order );
var offset = strides2offset( shape, strides );
// Print array information:
console.log( '' );
console.log( 'Dims: %s', shape.join( 'x' ) );
// Random flip strides and convert an ndarray to a nested array...
var arr;
var j;
for ( i = 0; i < 20; i++ ) {
j = dicreteUniform( 0, ndims-1 );
strides[ j ] *= -1;
offset = strides2offset( shape, strides );
console.log( '' );
console.log( 'Strides: %s', strides.join( ',' ) );
console.log( 'Offset: %d', offset );
arr = ndarray2array( buffer, shape, strides, offset, order );
console.log( JSON.stringify( arr ) );
}