ak.count#
Defined in awkward.operations.ak_count on line 23.
- ak.count(array, axis=None, *, keepdims=False, mask_identity=False, highlevel=True, behavior=None, attrs=None)#
- Parameters:
array – Array-like data (anything
ak.to_layoutrecognizes).axis (None or int or str) – If None, combine all values from the array into a single scalar result; if an int, group by that axis:
0is the outermost,1is the first level of nested lists, etc., and negativeaxiscounts from the innermost:-1is the innermost,-2is the next level up, etc; if a str, it is interpreted as the name of the axis which maps to an int if named axes are present. Named axes are attached to an array usingak.with_named_axisand removed withak.without_named_axis; also see the Named axes user guide.keepdims (bool) – If False, this reducer decreases the number of dimensions by 1; if True, the reduced values are wrapped in a new length-1 dimension so that the result of this operation may be broadcasted with the original array.
mask_identity (bool) – If True, reducing over empty lists results in None (an option type); otherwise, reducing over empty lists results in the operation’s identity.
highlevel (bool) – If True, return an
ak.Array; otherwise, return a low-levelak.contents.Contentsubclass.behavior (None or dict) – Custom
ak.behaviorfor the output array, if high-level.attrs (None or dict) – Custom attributes for the output array, if high-level.
Counts elements of
array(many types supported, including all Awkward Arrays and Records). The identity of counting is0and it is usually not masked.This function has no analog in NumPy because counting values in a rectilinear array would only result in elements of the NumPy array’s shape.
However, for nested lists of variable dimension and missing values, the result of counting is non-trivial. For example, with this
>>> array = ak.Array([[ 0.1, 0.2 ], ... [None, 10.2, None], ... None, ... [20.1, 20.2, 20.3], ... [30.1, 30.2 ]])
the result of counting over the innermost dimension is
>>> ak.count(array, axis=-1) <Array [2, 1, None, 3, 2] type='5 * ?int64'>
the outermost dimension is
>>> ak.count(array, axis=0) <Array [3, 4, 1] type='3 * int64'>
and all dimensions is
>>> ak.count(array, axis=None) 8
The gaps and None values are not counted, and if a None value occurs at a higher axis than the one being counted, it is kept as a placeholder so that the outer list length does not change.
See
ak.sumfor a more complete description of nested list and missing value (None) handling in reducers.Note also that this function is different from
ak.num, which counts the number of values at a given depth, maintaining structure:ak.numnever counts across different lists the way that reducers do (ak.numis not a reducer;ak.countis). For the samearray,>>> ak.num(array, axis=0) 5 >>> ak.num(array, axis=1) <Array [2, 3, None, 3, 2] type='5 * ?int64'>
If it is desirable to include None values in
ak.count, useak.fill_noneto turn the None values into something that would be counted.If it is desirable to exclude NaN (“not a number”) values from
ak.count, useak.nan_to_noneto turn them into None, which are not counted.