Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

fillSlice

Fill an input ndarray view with a specified value.

Usage

var fillSlice = require( '@stdlib/ndarray/fill-slice' );

fillSlice( x, value, ...s[, options] )

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 MultiSlice instance, 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:

  1. providing a single MultiSlice instance.
  2. providing a single array of slice arguments.
  3. 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 ] ]

Notes

  • An input ndarray must be writable. If provided a read-only ndarray, the function throws an error.
  • A slice argument must be either a Slice, an integer, null, or undefined.
  • If a fill value is a number and x has a complex data type, the function fills an input ndarray with a complex number whose real component equals the provided fill value and whose imaginary component is zero.
  • A fill value must be able to safely cast to the input ndarray data 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' input ndarray).
  • The function mutates the input ndarray.

Examples

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 ) );