UNPKG

@stdlib/strided

Version:
142 lines (112 loc) 4.57 kB
{{alias}}( arrays, shape, strides, fcn, clbk[, thisArg] ) Applies a unary function to each element retrieved from a strided input array according to a callback function and assigns results to a strided output array. The shape and stride parameters determine which elements in the strided input and output arrays are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use typed array views. The callback function is provided four arguments: - value: array element. - idx: iteration index. - indices: strided indices (offset + idx*stride). - arrays: input and output arrays. If the callback function does not return any value (or equivalently, explicitly returns `undefined`), the value is ignored. Parameters ---------- arrays: ArrayLikeObject<ArrayLikeObject> Array-like object containing one strided input array and one strided output array. shape: ArrayLikeObject<integer> Array-like object containing a single element, the number of indexed elements. strides: ArrayLikeObject<integer> Array-like object containing the stride lengths for the strided input and output arrays. fcn: Function Unary function to apply to callback return values. clbk: Function Callback function. thisArg: any (optional) Callback execution context. Examples -------- // Standard usage: > var x = [ 1.0, -2.0, 3.0, -4.0 ]; > var y = [ 0.0, 0.0, 0.0, 0.0 ]; > var sh = [ x.length ]; > var st = [ 1, 1 ]; > function clbk( v ) { return v * 2.0; }; > {{alias}}( [ x, y ], sh, st, {{alias:@stdlib/math/base/special/abs}}, clbk ); > y [ 2.0, 4.0, 6.0, 8.0 ] // Using shape and stride parameters: > y = [ 0.0, 0.0, 0.0, 0.0 ]; > sh = [ 2 ]; > st = [ 2, -1 ]; > {{alias}}( [ x, y ], sh, st, {{alias:@stdlib/math/base/special/abs}}, clbk ); > y [ 6.0, 2.0, 0.0, 0.0 ] // Using view offsets: > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, -4.0 ] ); > var y0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] ); > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); > sh = [ 2 ]; > st = [ -2, 1 ]; > {{alias}}( [ x1, y1 ], sh, st, {{alias:@stdlib/math/base/special/abs}}, clbk ); > y1 <Float64Array>[ 8.0, 4.0 ] > y0 <Float64Array>[ 0.0, 0.0, 8.0, 4.0 ] {{alias}}.ndarray( arrays, shape, strides, offsets, fcn, clbk[, thisArg] ) Applies a unary function to each element retrieved from a strided input array according to a callback function and assigns results to a strided output array using alternative indexing semantics. While typed array views mandate a view offset based on the underlying buffer, the offsest parameters support indexing semantics based on starting indices. Parameters ---------- arrays: ArrayLikeObject<ArrayLikeObject> Array-like object containing one strided input array and one strided output array. shape: ArrayLikeObject<integer> Array-like object containing a single element, the number of indexed elements. strides: ArrayLikeObject<integer> Array-like object containing the stride lengths for the strided input and output arrays. offsets: ArrayLikeObject<integer> Array-like object containing the starting indices (i.e., index offsets) for the strided input and output arrays. fcn: Function Unary function to apply to callback return values. clbk: Function Callback function. thisArg: any (optional) Callback execution context. Examples -------- // Standard usage: > var x = [ 1.0, -2.0, 3.0, -4.0 ]; > var y = [ 0.0, 0.0, 0.0, 0.0 ]; > var sh = [ x.length ]; > var st = [ 1, 1 ]; > var o = [ 0, 0 ]; > function clbk( v ) { return v * 2.0; }; > {{alias}}.ndarray( [ x, y ], sh, st, o, {{alias:@stdlib/math/base/special/abs}}, clbk ); > y [ 2.0, 4.0, 6.0, 8.0 ] // Advanced indexing: > x = [ 1.0, -2.0, 3.0, -4.0 ]; > y = [ 0.0, 0.0, 0.0, 0.0 ]; > sh = [ 2 ]; > st = [ 2, -1 ]; > o = [ 1, y.length-1 ]; > {{alias}}.ndarray( [ x, y ], sh, st, o, {{alias:@stdlib/math/base/special/abs}}, clbk ); > y [ 0.0, 0.0, 8.0, 4.0 ] See Also --------