larray.Array.with_total

Array.with_total(*args, op=<function sum>, label='total', **kwargs) Array[source]

Add aggregated values (sum by default) along each axis.

A user defined label can be given to specified the computed values.

Parameters
*argsint or str or Axis or Group or any combination of those, optional

Axes or groups along which to compute the aggregates. Passed groups should be named. Defaults to aggregate over the whole array.

opaggregate function, optional

Available aggregate functions are: sum, prod, min, max, mean, ptp, var, std, median and percentile. Defaults to sum.

labelscalar value, optional

Label to use for the total. Applies only to aggregated axes, not groups. Defaults to “total”.

**kwargsint or str or Group or any combination of those, optional

Axes or groups along which to compute the aggregates.

Returns
Array

Examples

>>> arr = ndtest("gender=M,F;time=2013..2016")
>>> arr
gender\time  2013  2014  2015  2016
          M     0     1     2     3
          F     4     5     6     7
>>> arr.with_total()
gender\time  2013  2014  2015  2016  total
          M     0     1     2     3      6
          F     4     5     6     7     22
      total     4     6     8    10     28

Using another function and label

>>> arr.with_total(op=mean, label='mean')
gender\time  2013  2014  2015  2016  mean
          M   0.0   1.0   2.0   3.0   1.5
          F   4.0   5.0   6.0   7.0   5.5
       mean   2.0   3.0   4.0   5.0   3.5

Specifying an axis and a label

>>> arr.with_total('gender', label='U')
gender\time  2013  2014  2015  2016
          M     0     1     2     3
          F     4     5     6     7
          U     4     6     8    10

Using groups

>>> time_groups = (arr.time[:2014] >> 'before_2015',
...                arr.time[2015:] >> 'after_2015')
>>> arr.with_total(time_groups)
gender\time  2013  2014  2015  2016  before_2015  after_2015
          M     0     1     2     3            1           5
          F     4     5     6     7            9          13
>>> # or equivalently
>>> # arr.with_total('time[:2014] >> before_2015; time[2015:] >> after_2015')