上一主题

numpy.ufunc.identity

下一主题

numpy.ufunc.accumulate

numpy.ufunc.reduce

ufunc.reduce(a, axis=0, dtype=None, out=None, keepdims=False)

通过沿一个轴应用ufunc,将a的尺寸减少一。

a.shape = (N_0, ..., N_i, ..., N_{M-1})然后ufunc.reduce(a, axis=i)[k_0, ..,k_{i-1}, k_{i+1}, .., k_{M-1}] =在range(N_i)之上迭代j的结果,对每个a[k_0, ..,k_{i-1}, j, k_{i+1}, .., k_{M-1}]累积应用ufunc。对于一维数组,reduce生成的结果等效于:

r = op.identity # op = ufunc
for i in range(len(A)):
  r = op(r, A[i])
return r

例如,add.reduce()等价于sum()。

参数:

a:array_like

要执行的数组。

axis:无或int或tuple ints,可选

执行缩小的轴或轴。默认值(axis = 0)对输入数组的第一维执行缩小。可能为负,在这种情况下,从最后一个轴计数到第一个轴。

版本1.7.0中的新功能。

如果这是,则在所有轴上执行缩小。如果这是一个ints的元组,则在多个轴上执行缩减,而不是像以前一样执行单个轴或所有轴。

对于不是可交换的或不相关的操作,在多个轴上执行缩减不是很好地定义。在这种情况下,ufuncs目前不会引发异常,但是将来可能会这样做。

dtype:数据类型代码,可选

用于表示中间结果的类型。默认为输出数组的数据类型(如果提供)或输入数组的数据类型(如果未提供输出数组)。

out:ndarray,可选

存储结果的位置。如果未提供,则返回新分配的数组。

keepdims:bool,可选

如果设置为True,则缩小的轴在结果中保留为尺寸为1的尺寸。使用此选项,结果将相对于原始arr正确广播。

版本1.7.0中的新功能。

返回:

r:ndarray

减少的数组。如果提供out,则r是对它的引用。

例子

>>> np.multiply.reduce([2,3,5])
30

多维数组示例:

>>> 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]])