Sums array elements along the specified axes.
A boolean array is counted, like base::sum() does.
Arguments
- x
(
arrayish)
One input. Can be any data type. An R value materializes at its default data type.- axes
(
integer()|NULL)
Axes to reduce over. Negative values count from the end, i.e.-1refers to the last axis. IfNULL(default), reduces over all axes.- drop
(
logical(1))
Whether to drop the reduced axes: removed from the output shape ifTRUE, set to 1 ifFALSE.- nan_rm
(
logical(1))
How to handleNaNvalues in float inputs. IfFALSE(default),NaNpropagates. IfTRUE,NaNvalues are skipped.
Value
(arrayish)
Has the input's data type, except a boolean input, which is accumulated
at the default integer data type (see
default_dtypes()). The shape is the
input's with the reduced axes removed (drop = TRUE) or set to 1 (drop = FALSE).
The sum() generic
sum() reduces over all axes and, like base::sum(), takes several data
arguments: sum(x, y) is the sum of both arrays. na.rm becomes nan_rm.
Beyond base R, named arguments are passed on, so sum(x, axes = 1L) reduces
a single axis – but only when x is the only data argument.
See also
prim_reduce_sum() for the underlying primitive.
Examples
x <- nv_matrix(1:6, nrow = 2)
# no axes given: reduce over all of them
nv_reduce_sum(x)
#> AnvlArray
#> 21
#> [ CPUi32{} ]
# reducing axis 1 removes it, drop = FALSE keeps it at size 1
nv_reduce_sum(x, axes = 1L)
#> AnvlArray
#> 3
#> 7
#> 11
#> [ CPUi32{3} ]
nv_reduce_sum(x, axes = 1L, drop = FALSE)
#> AnvlArray
#> 3 7 11
#> [ CPUi32{1,3} ]
# negative axes count from the end
nv_reduce_sum(x, axes = -1L)
#> AnvlArray
#> 9
#> 12
#> [ CPUi32{2} ]
# NaN propagates unless nan_rm = TRUE
nv_reduce_sum(nv_array(c(1, NaN, 3)))
#> AnvlArray
#> nan
#> [ CPUf32{} ]
nv_reduce_sum(nv_array(c(1, NaN, 3)), nan_rm = TRUE)
#> AnvlArray
#> 4
#> [ CPUf32{} ]
nv_reduce_sum(nv_array(c(TRUE, FALSE, TRUE))) # counts: 2
#> AnvlArray
#> 2
#> [ CPUi32{} ]