Reduces a‘s dimension by one, by applying ufunc along one axis.
Let . Then = the result of iterating j over , cumulatively applying ufunc to each . For a onedimensional array, reduce produces results equivalent to:
r = op.identity # op = ufunc
for i in xrange(len(A)):
r = op(r, A[i])
return r
For example, add.reduce() is equivalent to sum().
Parameters :  a : array_like
axis : None or int or tuple of ints, optional
dtype : datatype code, optional
out : ndarray, optional
keepdims : bool, optional


Returns :  r : ndarray

Examples
>>> np.multiply.reduce([2,3,5])
30
A multidimensional array example:
>>> X = np.arange(8).reshape((2,2,2))
>>> X
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> np.add.reduce(X, 0)
array([[ 4, 6],
[ 8, 10]])
>>> np.add.reduce(X) # confirm: default axis value is 0
array([[ 4, 6],
[ 8, 10]])
>>> np.add.reduce(X, 1)
array([[ 2, 4],
[10, 12]])
>>> np.add.reduce(X, 2)
array([[ 1, 5],
[ 9, 13]])