nditerRows
Create an iterator which iterates over each row in a matrix (or stack of matrices).
Usage
var nditerRows = require( '@stdlib/ndarray/iter/rows' );
nditerRows( x[, options] )
Returns an iterator which iterates over each row in a matrix (or stack of matrices).
var array = require( '@stdlib/ndarray/array' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ] );
// returns <ndarray>
var iter = nditerRows( x );
var v = iter.next().value;
// returns <ndarray>
var arr = ndarray2array( v );
// returns [ 1, 2 ]
v = iter.next().value;
// returns <ndarray>
arr = ndarray2array( v );
// returns [ 3, 4 ]
v = iter.next().value;
// returns <ndarray>
arr = ndarray2array( v );
// returns [ 5, 6 ]
// ...
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 array = require( '@stdlib/ndarray/array' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var x = array( [ [ [ 1, 2 ], [ 3, 4 ] ], [ [ 5, 6 ], [ 7, 8 ] ] ] );
// returns <ndarray>
var iter = nditerRows( x, {
'readonly': false
});
var v = iter.next().value;
// returns <ndarray>
var arr = ndarray2array( v );
// returns [ 1, 2 ]
v.set( 0, 10 );
arr = ndarray2array( v );
// 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
- 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 array = require( '@stdlib/ndarray/array' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var ndarray2array = require( '@stdlib/ndarray/to-array' );
var nditerRows = require( '@stdlib/ndarray/iter/rows' );
// Define an input array:
var x = array( zeroTo( 27 ), {
'shape': [ 3, 3, 3 ]
});
// Create an iterator for iterating over rows:
var it = nditerRows( x );
// Perform manual iteration...
var v;
while ( true ) {
v = it.next();
if ( v.done ) {
break;
}
console.log( ndarray2array( v.value ) );
}