# numpy.ufunc.accumulate

method

ufunc.accumulate(array, axis=0, dtype=None, out=None)

  Accumulate the result of applying the operator to all elements.

  For a one-dimensional array, accumulate produces results equivalent to:

      r = np.empty(len(A))
      t = op.identity        # op = the ufunc being applied to A's  elements
      for i in range(len(A)):
          t = op(t, A[i])
          r[i] = t
      return r

  For example, add.accumulate() is equivalent to np.cumsum().

  For a multi-dimensional array, accumulate is applied along only one axis (axis zero by default; see Examples below) so repeated use is necessary if one wants to accumulate over multiple axes.

  Parameters:
    array array_like

      The array to act on.

    axis int, optional

      The axis along which to apply the accumulation; default is zero.

    dtype data-type code, optional

      The data-type used to represent the intermediate results. Defaults to the data-type of the output array if such is provided, or the data-type of the input array if no output array is provided.

    out ndarray, None, or tuple of ndarray and None, optional

      A location into which the result is stored. If not provided or None, a freshly-allocated array is returned. For consistency with `ufunc.__call__`, if given as a keyword, this may be wrapped in a 1-element tuple.

      Changed in version 1.13.0: Tuples are allowed for keyword argument.

  Returns:
    r ndarray

      The accumulated values. If out was supplied, r is a reference to out.

  Examples

  1-D array examples:

      >>> np.add.accumulate([2, 3, 5])
      array([ 2,  5, 10])
      >>> np.multiply.accumulate([2, 3, 5])
      array([ 2,  6, 30])

  2-D array examples:

      >>> I = np.eye(2)
      >>> I
      array([[1.,  0.],
             [0.,  1.]])

  Accumulate along axis 0 (rows), down columns:

      >>> np.add.accumulate(I, 0)
      array([[1.,  0.],
             [1.,  1.]])
      >>> np.add.accumulate(I) # no axis specified = axis zero
      array([[1.,  0.],
             [1.,  1.]])

  Accumulate along axis 1 (columns), through rows:

      >>> np.add.accumulate(I, 1)
      array([[1.,  1.],
             [0.,  1.]])