# shape2strides > Generate a stride array from an array shape.
## Usage ```javascript var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); ``` #### shape2strides( shape, order ) Generates a stride array from an array shape. ```javascript var strides = shape2strides( [ 3, 2 ], 'row-major' ); // returns [ 2, 1 ] ``` The `order` parameter specifies whether an array is `row-major` (C-style) or `column-major` (Fortran-style). ```javascript var strides = shape2strides( [ 3, 2 ], 'column-major' ); // returns [ 1, 3 ] ``` #### shape2strides.assign( shape, order, out ) Generates a stride array from an array shape and assigns results to a provided output array. ```javascript var shape = [ 3, 2 ]; var strides = [ 0, 0 ]; var out = shape2strides.assign( shape, 'row-major', strides ); // returns [ 2, 1 ] var bool = ( strides === out ); // returns true ```
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var strides; var shape; var i; shape = [ 0, 0, 0 ]; for ( i = 0; i < 100; i++ ) { shape[ 0 ] = discreteUniform( 1, 10 ); shape[ 1 ] = discreteUniform( 1, 10 ); shape[ 2 ] = discreteUniform( 1, 10 ); strides = shape2strides( shape, 'row-major' ); console.log( 'shape: %s. strides: %s.', shape.join( 'x' ), strides.join( ', ' ) ); } ```
* * *
## C APIs
### Usage ```c #include "stdlib/ndarray/base/shape2strides.h" ``` #### stdlib_ndarray_shape2strides( ndims, \*shape, order, \*out ) Generates a stride array from an array shape. ```c #include "stdlib/ndarray/orders.h" int64_t ndims = 3; int64_t shape[] = { 2, 3, 10 }; int64_t out[ 3 ]; stdlib_ndarray_shape2strides( ndims, shape, STDLIB_NDARRAY_ROW_MAJOR, out ); ``` The function accepts the following arguments: - **ndims**: `[in] int64_t` number of dimensions. - **shape**: `[in] int64_t*` array shape (dimensions). - **order**: `[in] enum STDLIB_NDARRAY_ORDER` specifies whether an array is row-major (C-style) or column-major (Fortran-style). - **out**: `[out] int64_t*` output strides array. ```c int8_t stdlib_ndarray_shape2strides( int64_t ndims, int64_t *shape, enum STDLIB_NDARRAY_ORDER order, int64_t *out ); ```
### Examples ```c #include "stdlib/ndarray/base/shape2strides.h" #include "stdlib/ndarray/orders.h" #include #include int main() { int64_t shape[] = { 2, 3, 10 }; int64_t ndims = 3; int64_t out[ 3 ]; stdlib_ndarray_shape2strides( ndims, shape, STDLIB_NDARRAY_ROW_MAJOR, out ); int i; printf( "strides = { " ); for ( i = 0; i < ndims; i++ ) { printf( "%"PRId64"", out[ i ] ); if ( i < ndims-1 ) { printf( ", " ); } } printf( " }\n" ); } ```