Fill an input
ndarrayview with a specified value.
var fillSlice = require( '@stdlib/ndarray/fill-slice' );Fills an input ndarray view with a specified value.
var zeros = require( '@stdlib/ndarray/zeros' );
var MultiSlice = require( '@stdlib/slice/multi' );
var Slice = require( '@stdlib/slice/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var x = zeros( [ 3, 4 ], {
'dtype': 'float64'
});
// Define the fill region:
var s0 = new Slice( 1, 3 );
var s1 = new Slice( 2, 4 );
var s = new MultiSlice( s0, s1 );
// Fill the region with a scalar value:
var y = fillSlice( x, 5.0, s );
// returns <ndarray>
var bool = ( y === x );
// returns true
var arr = ndarray2array( x );
// returns [ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 5.0, 5.0 ], [ 0.0, 0.0, 5.0, 5.0 ] ]The function accepts the following arguments:
- x: input
ndarray. - value: fill value.
- s: a
MultiSliceinstance, an array of slice arguments, or slice arguments as separate arguments. - options: function options.
The function supports three (mutually exclusive) means for providing slice arguments:
- providing a single
MultiSliceinstance. - providing a single array of slice arguments.
- providing slice arguments as separate arguments.
The following example demonstrates each invocation style achieving equivalent results.
var zeros = require( '@stdlib/ndarray/zeros' );
var MultiSlice = require( '@stdlib/slice/multi' );
var Slice = require( '@stdlib/slice/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var opts = {
'dtype': 'float64'
};
// 1. Using a MultiSlice:
var x = zeros( [ 3, 4 ], opts );
var s0 = new Slice( 1, 3 );
var s1 = new Slice( 2, 4 );
var s = new MultiSlice( s0, s1 );
var out = fillSlice( x, 5.0, s );
// returns <ndarray>
var arr = ndarray2array( out );
// returns [ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 5.0, 5.0 ], [ 0.0, 0.0, 5.0, 5.0 ] ]
// 2. Using an array of slice arguments:
x = zeros( [ 3, 4 ], opts );
out = fillSlice( x, 6.0, [ s0, s1 ] );
// returns <ndarray>
arr = ndarray2array( out );
// returns [ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 6.0, 6.0 ], [ 0.0, 0.0, 6.0, 6.0 ] ]
// 3. Providing separate arguments:
x = zeros( [ 3, 4 ], opts );
out = fillSlice( x, 7.0, s0, s1 );
// returns <ndarray>
arr = ndarray2array( out );
// returns [ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 7.0, 7.0 ], [ 0.0, 0.0, 7.0, 7.0 ] ]The function supports the following options:
- strict: boolean indicating whether to enforce strict bounds checking.
By default, the function throws an error when provided a slice which exceeds array bounds. To ignore slice indices exceeding array bounds, set the strict option to false.
var zeros = require( '@stdlib/ndarray/zeros' );
var MultiSlice = require( '@stdlib/slice/multi' );
var Slice = require( '@stdlib/slice/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var x = zeros( [ 3, 4 ], {
'dtype': 'float64'
});
// Define the fill region:
var s0 = new Slice( 1, null, 1 );
var s1 = new Slice( 10, 20, 1 );
var s = new MultiSlice( s0, s1 );
// Fill the region with a scalar value:
var y = fillSlice( x, 5.0, s, {
'strict': false
});
// returns <ndarray>
var arr = ndarray2array( x );
// returns [ [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ], [ 0.0, 0.0, 0.0, 0.0 ] ]- An input
ndarraymust be writable. If provided a read-onlyndarray, the function throws an error. - A slice argument must be either a
Slice, an integer,null, orundefined. - If a fill value is a number and
xhas a complex data type, the function fills an inputndarraywith a complex number whose real component equals the provided fillvalueand whose imaginary component is zero. - A fill value must be able to safely cast to the input
ndarraydata type. Fill values having floating-point data types (both real and complex) are allowed to downcast to a lower precision data type of the same kind (e.g., a scalar double-precision floating-point number can be used to fill a'float32'inputndarray). - The function mutates the input
ndarray.
var zeros = require( '@stdlib/ndarray/zeros' );
var MultiSlice = require( '@stdlib/slice/multi' );
var Slice = require( '@stdlib/slice/ctor' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var fillSlice = require( '@stdlib/ndarray/fill-slice' );
// Create a zero-filled ndarray:
var x = zeros( [ 2, 3, 4 ], {
'dtype': 'generic'
});
console.log( ndarray2array( x ) );
// Specify the fill region:
var s0 = new Slice( 1, 2 );
var s1 = new Slice( null, null );
var s2 = new Slice( 2, 4 );
var s = new MultiSlice( s0, s1, s2 );
// Fill a slice with a scalar value:
fillSlice( x, 10.0, s );
console.log( ndarray2array( x ) );