nditerRowEntries
Create an iterator which returns
[index, row]
pairs for each row in a matrix (or stack of matrices).
Usage
var nditerRowEntries = require( '@stdlib/ndarray/iter/row-entries' );
nditerRowEntries( x[, options] )
Returns an iterator which returns [index, row]
pairs for each row in a matrix (or stack of matrices).
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var array = require( '@stdlib/ndarray/array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ] );
// returns <ndarray>
var iter = nditerRowEntries( x );
var v = iter.next().value;
// returns [...]
var idx = v[ 0 ];
// returns [ 0, 0, null ]
var row = ndarray2array( v[ 1 ] );
// returns [ 1, 2 ]
v = iter.next().value;
// returns [...]
idx = v[ 0 ];
// returns [ 0, 1, null ]
row = ndarray2array( v[ 1 ] );
// returns [ 3, 4 ]
// ...
The function accepts the following options
:
- readonly: boolean indicating whether returned
ndarray
views should be read-only. In order to return writablendarray
views, the inputndarray
must be writable. If the inputndarray
is read-only, setting this option tofalse
raises an exception. Default:true
.
By default, the iterator returns ndarray
views which are read-only. To return writable views, set the readonly
option to false
.
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var array = require( '@stdlib/ndarray/array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ] );
// returns <ndarray>
var iter = nditerRowEntries( x, {
'readonly': false
});
var v = iter.next().value;
// returns [...]
var row = ndarray2array( v[ 1 ] );
// returns [ 1, 2 ]
v[ 1 ].set( 0, 10 );
row = ndarray2array( v[ 1 ] );
// returns [ 10, 2 ]
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
- Each returned index is a Cartesian index (i.e., an array of subscripts/dimension indices). A dimension index equal to
null
indicates that all values along the respective dimension are included in the returnedndarray
. - If an environment supports
Symbol.iterator
, the returned iterator is iterable. - A returned iterator does not copy a provided
ndarray
. To ensure iterable reproducibility, copy the inputndarray
before creating an iterator. Otherwise, any changes to the contents of inputndarray
will be reflected in the returned iterator. - In environments supporting
Symbol.iterator
, the function explicitly does not invoke an ndarray's@@iterator
method, regardless of whether this method is defined.
Examples
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var array = require( '@stdlib/ndarray/array' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var nditerRowEntries = require( '@stdlib/ndarray/iter/row-entries' );
// Define an input array:
var x = array( zeroTo( 27 ), {
'shape': [ 3, 3, 3 ]
});
// Create an iterator for returning [index, row] pairs:
var it = nditerRowEntries( x );
// Perform manual iteration...
var v;
while ( true ) {
v = it.next();
if ( v.done ) {
break;
}
console.log( v.value[ 0 ] );
console.log( ndarray2array( v.value[ 1 ] ) );
}