# Non-Singleton Dimensions > Return the number of non-singleton dimensions.
## Usage ```javascript var nonsingletonDimensions = require( '@stdlib/ndarray/base/nonsingleton-dimensions' ); ``` #### nonsingletonDimensions( shape ) Returns number of non-singleton dimensions. ```javascript var n = nonsingletonDimensions( [ 3, 1, 3 ] ); // returns 2 ```
## Notes - A singleton dimension is a dimension whose size is equal to `1`.
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var nonsingletonDimensions = require( '@stdlib/ndarray/base/nonsingleton-dimensions' ); var shape; var n; var i; shape = [ 0, 0, 0 ]; for ( i = 0; i < 100; i++ ) { shape[ 0 ] = discreteUniform( 1, 5 ); shape[ 1 ] = discreteUniform( 1, 5 ); shape[ 2 ] = discreteUniform( 1, 5 ); n = nonsingletonDimensions( shape ); console.log( 'shape: %s. non-singleton dimensions: %d.', shape.join( 'x' ), n ); } ```
* * *
## C APIs
### Usage ```c #include "stdlib/ndarray/base/nonsingleton_dimensions.h" ``` #### stdlib_ndarray_nonsingleton_dimensions( ndims, \*shape ) Returns the number of non-singleton dimensions. ```c int64_t ndims = 2; int64_t shape[] = { 10, 1 }; int64_t n = stdlib_ndarray_nonsingleton_dimensions( ndims, shape ); // returns 1 ``` The function accepts the following arguments: - **ndims**: `[in] int64_t` number of dimensions. - **shape**: `[in] int64_t*` array shape. ```c int64_t stdlib_ndarray_nonsingleton_dimensions( int64_t ndims, int64_t *shape ); ```
### Examples ```c #include "stdlib/ndarray/base/nonsingleton_dimensions.h" #include #include int main() { int64_t shape[] = { 10, 3, 1, 1, 5 }; int64_t n = stdlib_ndarray_nonsingleton_dimensions( 5, shape ); printf( "shape: %"PRId64"x%"PRId64"x%"PRId64"x%"PRId64"x%"PRId64". non-singleton dimensions: %"PRId64"\n", shape[ 0 ], shape[ 1 ], shape[ 2 ], shape[ 3 ], shape[ 4 ], n ); } ```