strides

Return the strides of a provided ndarray.

Usage

var strides = require( '@stdlib/ndarray/base/strides' );

strides( x, copy )

Returns the strides of a provided ndarray.

var zeros = require( '@stdlib/ndarray/zeros' );

var x = zeros( [ 3, 2, 3 ] );
// returns <ndarray>

var st = strides( x, false );
// returns [ 6, 3, 1 ]

When copy is false, changes to the returned strides array may mutate the input ndarray strides. If there is a chance that the returned strides will be mutated (either directly or by downstream consumers), set copy to true to prevent unintended side effects.

var zeros = require( '@stdlib/ndarray/zeros' );

var x = zeros( [ 3, 2, 3 ] );
// returns <ndarray>

var st = strides( x, true );
// returns [ 6, 3, 1 ]

var bool = ( x.strides === st );
// returns false

Examples

var zeros = require( '@stdlib/ndarray/zeros' );
var slice = require( '@stdlib/ndarray/slice' );
var E = require( '@stdlib/slice/multi' );
var S = require( '@stdlib/slice/ctor' );
var strides = require( '@stdlib/ndarray/base/strides' );

// Create an array:
var x = zeros( [ 10, 10, 10, 10 ] );
// returns <ndarray>

// Define some slices:
var slices = [
    // :,:,:,:
    E( null, null, null, null ),

    // 5:10,4,2:4,::-1
    E( S( 5, 10 ), 4, S( 2, 4 ), S( null, null, -1 ) ),

    // :,:,2,:
    E( null, null, 2, null ),

    // 1,2,3,:
    E( 1, 2, 3, null ),

    // 1,3,::2,4::2
    E( 1, 3, S( null, null, 2 ), S( 4, null, 2 ) )
];

// Determine the strides of each slice...
var s;
var i;
for ( i = 0; i < slices.length; i++ ) {
    s = slice( x, slices[ i ] );
    console.log( '(%s) => (%s)', x.strides.join( ',' ), strides( s, false ).join( ',' ) );
}
Did you find this page helpful?