Compute the maximum value of a double-precision floating-point ndarray according to a mask, ignoring
NaNvalues.
var dnanmskmax = require( '@stdlib/stats/base/ndarray/dnanmskmax' );Computes the maximum value of a double-precision floating-point ndarray according to a mask, ignoring NaN values.
var Float64Array = require( '@stdlib/array/float64' );
var Uint8Array = require( '@stdlib/array/uint8' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var xbuf = new Float64Array( [ 1.0, -2.0, NaN, 2.0 ] );
var x = new ndarray( 'float64', xbuf, [ 4 ], [ 1 ], 0, 'row-major' );
var maskbuf = new Uint8Array( [ 0, 0, 0, 0 ] );
var mask = new ndarray( 'uint8', maskbuf, [ 4 ], [ 1 ], 0, 'row-major' );
var v = dnanmskmax( [ x, mask ] );
// returns 2.0The function has the following parameters:
- arrays: array-like object containing a one-dimensional input ndarray and a one-dimensional mask ndarray.
If a mask array element is 0, the corresponding element in the input ndarray is considered valid and included in computation. If a mask array element is 1, the corresponding element in the input ndarray is considered invalid/missing and excluded from computation.
- If provided an empty ndarray or a mask with all elements set to
1, the function returnsNaN.
var uniform = require( '@stdlib/random/base/uniform' );
var filledarrayBy = require( '@stdlib/array/filled-by' );
var bernoulli = require( '@stdlib/random/base/bernoulli' );
var ndarray = require( '@stdlib/ndarray/base/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var dnanmskmax = require( '@stdlib/stats/base/ndarray/dnanmskmax' );
function rand() {
if ( bernoulli( 0.2 ) < 1 ) {
return NaN;
}
return uniform( -50.0, 50.0 );
}
function randMask() {
if ( bernoulli( 0.1 ) < 1 ) {
return 1;
}
return 0;
}
var xbuf = filledarrayBy( 10, 'float64', rand );
var x = new ndarray( 'float64', xbuf, [ xbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( x ) );
var maskbuf = filledarrayBy( xbuf.length, 'uint8', randMask );
var mask = new ndarray( 'uint8', maskbuf, [ maskbuf.length ], [ 1 ], 0, 'row-major' );
console.log( ndarray2array( mask ) );
var v = dnanmskmax( [ x, mask ] );
console.log( v );