Non-Singleton Dimensions

Return the number of non-singleton dimensions.

Usage

var nonsingletonDimensions = require( '@stdlib/ndarray/base/nonsingleton-dimensions' );

nonsingletonDimensions( shape )

Returns the number of non-singleton dimensions.

var n = nonsingletonDimensions( [ 3, 1, 3 ] );
// returns 2

Notes

  • A singleton dimension is a dimension whose size is equal to 1.

Examples

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

#include "stdlib/ndarray/base/nonsingleton_dimensions.h"

stdlib_ndarray_nonsingleton_dimensions( ndims, *shape )

Returns the number of non-singleton dimensions.

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.
int64_t stdlib_ndarray_nonsingleton_dimensions( int64_t ndims, int64_t *shape );

Examples

#include "stdlib/ndarray/base/nonsingleton_dimensions.h"
#include <stdio.h>
#include <inttypes.h>

int main( void ) {
    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 );
}
Did you find this page helpful?