Skip to content

Latest commit

 

History

History
208 lines (142 loc) · 4.49 KB

File metadata and controls

208 lines (142 loc) · 4.49 KB

everyBy

Test whether all elements in an ndarray pass a test implemented by a predicate function.

Usage

var everyBy = require( '@stdlib/ndarray/base/every-by' );

everyBy( arrays, predicate[, thisArg] )

Tests whether all elements in an ndarray pass a test implemented by a predicate function.

var Float64Array = require( '@stdlib/array/float64' );

function clbk( value ) {
    return value > 0.0;
}

// Create a data buffer:
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );

// Define the shape of the input array:
var shape = [ 3, 1, 2 ];

// Define the array strides:
var sx = [ 4, 4, 1 ];

// Define the index offset:
var ox = 0;

// Create the input ndarray-like object:
var x = {
    'dtype': 'float64',
    'data': xbuf,
    'shape': shape,
    'strides': sx,
    'offset': ox,
    'order': 'row-major'
};

// Test elements:
var out = everyBy( [ x ], clbk );
// returns true

The function accepts the following arguments:

  • arrays: array-like object containing an input ndarray.
  • predicate: predicate function.
  • thisArg: predicate function execution context (optional).

The provided ndarray should be an object with the following properties:

  • dtype: data type.
  • data: data buffer.
  • shape: dimensions.
  • strides: stride lengths.
  • offset: index offset.
  • order: specifies whether an ndarray is row-major (C-style) or column major (Fortran-style).

The predicate function is provided the following arguments:

  • value: current array element.
  • indices: current array element indices.
  • arr: the input ndarray.

To set the predicate function execution context, provide a thisArg.

var Float64Array = require( '@stdlib/array/float64' );

function clbk( value ) {
    this.count += 1;
    return value > 0.0;
}

// Create a data buffer:
var xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] );

// Define the shape of the input array:
var shape = [ 3, 1, 2 ];

// Define the array strides:
var sx = [ 4, 4, 1 ];

// Define the index offset:
var ox = 0;

// Create the input ndarray-like object:
var x = {
    'dtype': 'float64',
    'data': xbuf,
    'shape': shape,
    'strides': sx,
    'offset': ox,
    'order': 'row-major'
};

var ctx = {
    'count': 0
};

// Test elements:
var out = everyBy( [ x ], clbk, ctx );
// returns true

var count = ctx.count;
// returns 6

Notes

  • For very high-dimensional ndarrays which are non-contiguous, one should consider copying the underlying data to contiguous memory before performing the operation in order to achieve better performance.
  • If provided an empty ndarray, the function returns true.

Examples

var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
var everyBy = require( '@stdlib/ndarray/base/every-by' );

function clbk( value ) {
    return value > 0;
}

var x = {
    'dtype': 'generic',
    'data': discreteUniform( 10, -2, 10, {
        'dtype': 'generic'
    }),
    'shape': [ 5, 2 ],
    'strides': [ 2, 1 ],
    'offset': 0,
    'order': 'row-major'
};
console.log( ndarray2array( x.data, x.shape, x.strides, x.offset, x.order ) );

var out = everyBy( [ x ], clbk );
console.log( out );