nditerIndices
Create an iterator which returns indices for use indexing into an
ndarray
having a specified shape.
Usage
var nditerIndices = require( '@stdlib/ndarray/iter/indices' );
nditerIndices( shape[, options] )
Returns an iterator which returns indices for use indexing into an ndarray
having a specified shape
.
var array = require( '@stdlib/ndarray/array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ] );
// returns <ndarray>
var iter = nditerIndices( x.shape );
var v = iter.next().value;
// returns [ 0, 0, 0 ]
v = iter.next().value;
// returns [ 0, 0, 1 ]
v = iter.next().value;
// returns [ 0, 1, 0 ]
// ...
The function accepts the following options
:
- order: index iteration order. By default, the returned iterator iterates over the last dimensions first, thus corresponding to iteration over contiguous data stored in row-major order. Must be either
'row-major'
or'column-major'
.
By default, the iterator returns indices such that the last dimensions are iterated over first. To return indices according to a specified order, set the order
option.
var array = require( '@stdlib/ndarray/array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ], {
'order': 'row-major'
});
// returns <ndarray>
var iter = nditerIndices( x.shape, {
'order': 'column-major'
});
var v = iter.next().value;
// returns [ 0, 0, 0 ]
v = iter.next().value;
// returns [ 1, 0, 0 ]
v = iter.next().value;
// returns [ 0, 1, 0 ]
// ...
The returned iterator protocol-compliant object has the following properties:
- next: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a
value
property and adone
property having aboolean
value indicating whether the iterator is finished. - return: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object.
Notes
- If an environment supports
Symbol.iterator
, the returned iterator is iterable.
Examples
var array = require( '@stdlib/ndarray/array' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var nditerIndices = require( '@stdlib/ndarray/iter/indices' );
// Define an input array:
var x = array( zeroTo( 27 ), {
'shape': [ 3, 3, 3 ]
});
// Create an iterator for generating indices:
var it = nditerIndices( x.shape );
// Perform manual iteration...
var v;
while ( true ) {
v = it.next();
if ( v.done ) {
break;
}
console.log( x.get.apply( x, v.value ) );
}