NumPy.add()方法
ufunc期望有一组标量作为输入,并产生一组标量作为输出。通用函数可以与数学方面有关,如加、减、除、乘,同样地。
numpy.add方法
实际上,通用函数不是函数,而是代表函数的对象。在这里,我们以函数–add为例,它们有两个输入参数,并返回一个输出参数(ufunc的签名不匹配将导致ValueError。因此,这只适用于二进制通用函数)。
关于Add的四种方法是:
- reduce
- accumulate
- outer
- reduceat
在本教程中,我们将详细介绍上述每个功能。
numpy.ufunc.reduce()
通过在连续的元素上沿指定轴线递归应用通用函数来减少给定的输入阵列。
注意: add.reduce()等同于sum()。
语法: ufunc.reduce(a, axis=0, dtype=None, out=None, keepdims=False, initial=, where=True)
参数 :
a(array_like):处理所依据的数组。
axis(None or int or tuple of ints, optional):执行还原的一个或多个轴。默认是(axis = 0)。Axis可以是负数,每当它向后计数时。None,在所有轴上进行缩减。Tuple of ints,在多个轴上进行缩减。
dtype(数据类型代码,可选):用于表示中间结果的类型。
out(ndarray, None, or tuple of ndarray and None, optional):存储结果的位置。如果没有提供或没有,则返回一个新分配的数组。
keepdims(bool, optional):如果设置为 “True”,被缩小的轴将作为尺寸为1的尺寸留在结果中。
initial(scalar, optional):用来开始还原的值。
where(array_like of bool, optional):一个布尔数组,该数组被播报为与a的尺寸相匹配,并选择元素包括在还原中。
返回值:
r : ndarray
示例:
# Reducing an array using np.add.reduce()
import numpy as np
# Array formation
a = np.arange(10)
# Reduction occurs column-wise with
# 'int' datatype
b = np.add.reduce(a, dtype = int, axis = 0)
print("The array {0} gets reduced to {1}".format(a, b))
输出
The array [0 1 2 3 4 5 6 7 8 9] gets reduced to 45
numpy.ufunc.accumulate()
它将中间结果存储在一个数组中并返回。就add函数而言,其结果等同于调用cumsum函数。
语法:ufunc.accumulate(array, axis=0, dtype=None, out=None)
参数:
array(array_like):要作用于的数组。
axis(int, optional):应用累积的轴;默认为零。
dtype(data-type code, optional):用于表示中间结果的数据类型。如果提供了输出数组的数据类型,则默认为输出数组的数据类型;如果没有提供输出数组,则默认为输入数组的数据类型。
out(ndarray, optional):一个存储结果的位置。如果没有提供,则返回一个新分配的数组。
返回:
r : ndarray
示例:
import numpy as np
# Array formation
a = np.arange(10)
# Cumulative sum of array, column wise,
# float datatype
c = np.add.accumulate(a, axis = 0, dtype = float)
print("The array {0} gets added cumulatively to {1}".format(a, c))
输出
The array [0 1 2 3 4 5 6 7 8 9] gets added cumulatively to [ 0. 1. 3. 6. 10. 15. 21. 28. 36. 45.]
numpy.ufunc.outer()
outer “方法返回一个数组,该数组有一个等级,是其两个输入数组的等级之和。该方法被应用于所有可能的输入数组元素对。
语法: ufunc.outer(A, B, **kwargs)
参数:
A(array_like):第一个数组
B(array_like):第二个数组
**kwargs(any): 传递给ufunc的参数。
返回:
r : ndarray
示例:
# To find the outer of two input arrays
import numpy as np
# Initialization of a 2x2 matrix
# as first input
a = np.arange(4).reshape(2,2)
# Initialization of an array as
# second input
b = np.arange(3)
# Outer of a & b
z = np.add.outer(b, a)
print("The outer of {0} & {1} is {2}".format(b,a,z))
输出
The outer of [0 1 2] & [[0 1]
[2 3]] is [[[0 1]
[2 3]]
[[1 2]
[3 4]]
[[2 3]
[4 5]]]
numpy.ufunc.reduceat()
reduceat() “方法需要一个输入数组和一个索引列表作为参数。reduceat()方法通过一步步的程序来执行其操作。我们将通过四个步骤来查看其操作。
示例:
# Reduceat method example
import numpy as np
a = np.arange(9)
z = np.add.reduceat(a, [1, 4, 2, 8])
print("Reduceat of matrix {} is {}".format(a,z))
输出
Reduceat of matrix [0 1 2 3 4 5 6 7 8] is [ 6 4 27 8]
步骤一
它涉及索引1和4。这一步的结果是减少了索引1和4之间的阵列元素的操作。
import numpy as np
a = np.arange(9)
print("Result of STEP-I is", np.add.reduce(a[0:4]))
输出
Result of STEP-I is 6
步骤二
第二步涉及索引4和2。由于2小于4,索引4的数组元素被返回。
import numpy as np
a = np.arange(9)
print("Result of STEP-II is", a[4])
输出
Result of STEP-II is 4
步骤三
第三步涉及索引2和8。这一步的结果是对索引2和8之间的数组元素进行减少操作。
import numpy as np
a = np.arange(9)
print("Result of STEP-III is", np.add.reduce(a[2:8]))
输出
Result of STEP-III is 27
步骤四
第四步涉及索引8。这一步的结果是对从索引8到数组末端的数组元素进行减少操作。
import numpy as np
a = np.arange(9)
print("Result of step IV is", np.add.reduce(a[8:]))
输出
Result of step IV is 8
通过所有这些步骤,我们得到了’numpy.add.reduceat’的输出。