take2d
Take elements from a two-dimensional nested array.
Usage
var take2d = require( '@stdlib/array/base/take2d' );
take2d( x, indices, dimension, mode )
Takes elements along a specified dimension
from a two-dimensional nested array according to a specified index mode
.
var x = [ [ 1, 2 ], [ 3, 4 ] ];
var indices = [ 1, 1, 0, 0, -1, -1 ];
var y = take2d( x, indices, 1, 'normalize' );
// returns [ [ 2, 2, 1, 1, 2, 2 ], [ 4, 4, 3, 3, 4, 4 ] ]
The function accepts the following arguments:
- x: input nested array.
- indices: list of indices.
- dimension: dimension along which to take elements. If provided a negative integer, the dimension is resolved relative to the last dimension, with the last dimension being
-1
. - mode: index mode specifying how to handle an index which is out-of-bounds.
If indices
is an empty array, the function returns empty arrays along the specified dimension
.
var x = [ [ 1, 2 ], [ 3, 4 ] ];
var y = take2d( x, [], 1, 'throw' );
// returns [ [], [] ]
var z = take2d( x, [], 0, 'throw' );
// returns []
Notes
- The function does not deep copy nested array elements.
Examples
var filled2dBy = require( '@stdlib/array/base/filled2d-by' );
var filledBy = require( '@stdlib/array/base/filled-by' );
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
var take2d = require( '@stdlib/array/base/take2d' );
// Generate a random array:
var shape = [ 5, 5 ];
var x = filled2dBy( shape, discreteUniform.factory( 0, 100 ) );
console.log( x );
// Generate an array of random indices:
var N = discreteUniform( 5, 15 );
var indices = filledBy( N, discreteUniform.factory( 0, shape[1]-1 ) );
console.log( indices );
// Take a random sample of elements from `x`:
var y = take2d( x, indices, 1, 'throw' );
console.log( y );