方法
ufunc.
reduce
减少 array 通过沿一个轴应用ufunc,一个一个的尺寸。
array
让 . 然后 =迭代结果 j 结束 ,累计向每个 . 对于一维数组,reduce生成的结果等于:::
r = op.identity # op = ufunc for i in range(len(A)): r = op(r, A[i]) return r
例如,add.reduce()等价于sum()。
要执行的数组。
沿其进行减速的轴。默认值 (axis =0)对输入数组的第一个维度执行缩减。 axis 可能为负,在这种情况下,它从最后一个轴计数到第一个轴。
1.7.0 新版功能.
如果为“无”,则在所有轴上执行缩减。如果这是一个整数元组,则对多个轴执行缩减,而不是像以前那样对单个轴或所有轴执行缩减。
对于非交换或非结合的运算,在多个轴上进行约简是不明确的。不明飞行物目前在这种情况下不提出例外,但很可能在未来提出。
用于表示中间结果的类型。如果提供了输出数组,则默认为输出数组的数据类型;如果没有提供输出数组,则默认为输入数组的数据类型。
存储结果的位置。如果未提供或没有,则返回新分配的数组。为了与 ufunc.__call__ ,如果作为关键字提供,则可以将其包装在一个1元素元组中。
ufunc.__call__
在 1.13.0 版更改: 关键字参数允许使用元组。
如果设置为“真”,则缩小的轴将保留在结果中,作为尺寸为1的尺寸。使用此选项,结果将正确广播到原始 array .
开始减少的值。如果ufunc没有标识或dtype为object,则默认为none,否则默认为ufunc.identity。如果 None 如果给定,则使用约简的第一个元素,如果约简为空,则抛出错误。
None
1.15.0 新版功能.
广播以匹配 array ,并选择要包含在缩减中的元素。注意,对于像 minimum 如果没有定义身份,就必须传入 initial .
minimum
initial
1.17.0 新版功能.
缩小的阵列。如果 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]])
你可以使用 initial 关键字参数来初始化具有不同值的缩减,以及 where 要选择要包含的特定元素,请执行以下操作:
where
>>> np.add.reduce([10], initial=5) 15 >>> np.add.reduce(np.ones((2, 2, 2)), axis=(0, 2), initial=10) array([14., 14.]) >>> a = np.array([10., np.nan, 10]) >>> np.add.reduce(a, where=~np.isnan(a)) 20.0
允许在通常会失败的情况下减少空阵列,即对于没有标识的UFunc。
>>> np.minimum.reduce([], initial=np.inf) inf >>> np.minimum.reduce([[1., 2.], [3., 4.]], initial=10., where=[True, False]) array([ 1., 10.]) >>> np.minimum.reduce([]) Traceback (most recent call last): ... ValueError: zero-size array to reduction operation minimum which has no identity