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 = new Array( 27 );
var len = buffer.length;
var i;
for ( i = 0; i < len; i++ ) {
    buffer[ i ] = 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 ) );
}