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 );
Did you find this page helpful?