A high-performance general-purpose compute library

Counts the non-zero values of an input array according to an array of keys. More...

Functions

AFAPI void countByKey (array &keys_out, array &vals_out, const array &keys, const array &vals, const int dim=-1)
 C++ Interface for counting non-zero values in an array according to a key.
 
AFAPI af_err af_count_by_key (af_array *keys_out, af_array *vals_out, const af_array keys, const af_array vals, const int dim)
 C Interface for counting non-zero values in an array according to key.
 

Detailed Description

Counts the non-zero values of an input array according to an array of keys.

All non-zero values corresponding to each group of consecutive equal keys will be counted. Keys can repeat, however only consecutive key values will be considered for each reduction. If a key value is repeated somewhere else in the keys array it will be considered the start of a new reduction. There are two outputs: the reduced set of consecutive keys and the corresponding final reduced values. An example demonstrating the reduction behavior can be seen in the following snippet.

array keys(9, hkeys); // keys = [ 0 0 1 1 1 0 0 2 2 ]
array vals(9, hvals); // vals = [ 1 1 0 1 1 0 0 1 0 ];
array okeys, ovals;
countByKey(okeys, ovals, keys, vals);
// okeys = [ 0 1 0 2 ]
// ovals = [ 2 2 0 1 ]

The keys input type must be an integer type(s32 or u32). The values return type will be of type u32.

The input keys must be a 1-D vector matching the size of the reduced dimension. In the case of multiple dimensions in the input values array, the dim parameter specifies which dimension to reduce along. An example of multi-dimensional reduce by key can be seen below:

array keys(5, hkeys);
array vals(2, 5, hvals);
// keys = [ 1 0 0 2 2 ]
// vals = [[ 1 1 1 0 1 ]
// [ 0 1 0 1 1 ]]
const int reduce_dim = 1;
array okeys, ovals;
countByKey(okeys, ovals, keys, vals, reduce_dim);
// okeys = [ 1 0 2 ]
// ovals = [[ 1 2 1 ],
// [ 0 1 2 ]]

Function Documentation

◆ af_count_by_key()

AFAPI af_err af_count_by_key ( af_array keys_out,
af_array vals_out,
const af_array  keys,
const af_array  vals,
const int  dim 
)

C Interface for counting non-zero values in an array according to key.

Parameters
[out]keys_outwill contain the reduced keys in vals along dim
[out]vals_outwill contain the count of all values in vals along dim according to keys
[in]keysis the key array
[in]valsis the array containing the values to be reduced
[in]dimThe dimension along which the non-zero values are counted
Returns
AF_SUCCESS if the execution completes properly

◆ countByKey()

AFAPI void countByKey ( array keys_out,
array vals_out,
const array keys,
const array vals,
const int  dim = -1 
)

C++ Interface for counting non-zero values in an array according to a key.

Parameters
[out]keys_outwill contain the reduced keys in vals along dim
[out]vals_outwill contain the count of all values in vals along dim according to keys
[in]keysis the key array
[in]valsis the array containing the values to be reduced
[in]dimThe dimension along which the count operation occurs
Note
dim is -1 by default. -1 denotes the first non-singleton dimension.
NaN values are treated as non zero.