NumPy divmod() 函数
NumPy divmod() 函数用于返回逐元素商和除法的余数。它执行除法和模运算,返回两个数组:一个用于计算商,一个用于计算余数。
此函数处理不同形状数组的广播,并且可以对数组和标量进行运算。
语法
以下是 NumPy divmod() 函数的语法 -
numpy.divmod(x1, x2, /, out1=None, out2=None, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
参数
此函数接受以下参数 -
- x1:被除数输入数组。该数组的元素将被 x2 的元素除。
- x2:除数输入数组。与 x1 类似,它的形状应与 x1 相同,或者可以广播为通用形状。
- out1(可选): 存储商的位置。如果提供,则必须具有输入广播到的形状。如果未提供或为 None,则返回一个新分配的数组。
- out2(可选): 存储余数的位置。如果提供,则必须具有输入广播到的形状。如果未提供或为 None,则返回一个新分配的数组。
- where(可选): 此条件通过输入进行广播。当条件为 True 时,out 数组将被设置为 ufunc 的结果。否则,它们将保留其原始值。
- casting(可选): 控制可能发生的数据转换类型。默认为"same_kind"。
- order(可选): 控制结果的内存布局顺序。"C"表示 C 顺序,"F"表示 Fortran 顺序,"A"表示如果输入均为 F,则为"F",否则为"C","K"表示尽可能匹配输入的布局。
- dtype(可选): 返回数组的类型以及执行除法的累加器的类型。除非指定 dtype,否则默认使用 x1 和 x2 的 dtype。
- subok(可选):如果为 True,则将传递子类,否则返回的数组将被强制为基类数组。
返回值
此函数返回两个数组:一个包含 x1 除以 x2 的逐元素商,另一个包含 x1 除以 x2 的逐元素余数。如果提供了 out1 和 out2,则返回对这两个数组的引用。
示例:divmod() 函数的基本用法
在以下示例中,我们创建两个一维数组,并使用 divmod() 函数执行元素级除法和模运算 -
import numpy as np # 创建两个一维数组 arr1 = np.array([5, 9, 11, 14]) arr2 = np.array([3, 4, 5, 6]) # 执行元素级除法和模运算 quotient, remainder = np.divmod(arr1, arr2) print("商:", quotient) print("余数:", remainder)
以下是得到的输出 −
商:[1 2 2 2] 余数:[2 1 1 2]
示例:带广播的 divmod() 函数
在此示例中,我们演示了如何使用 divmod() 函数进行广播。我们创建一个二维数组,并计算将其除以一维数组后的商和余数 −
import numpy as np # 创建二维数组 arr1 = np.array([[5, 9, 11], [14, 21, 29]]) # 创建一维数组 arr2 = np.array([3, 4, 5]) # 使用广播功能执行元素级除法和取模 quotient, remainder = np.divmod(arr1, arr2) print("商: ", quotient) print("余数: ", remainder)
这将产生以下结果 -
商: [[1 2 2] [4 5 5]] 余数: [[2 1 1] [2 1 4]]
示例:divmod() 函数标量
在本例中,我们将数组的所有元素除以一个标量,并计算商和余数 -
import numpy as np # 创建一维数组 arr = np.array([5, 9, 11, 14]) # 对标量值 3 执行除法和取模 quotient, remainder = np.divmod(arr, 3) print("商:", quotient) print("余数:", remainder)
以下是上述代码的输出 -
商: [1 3 3 4] 余数: [2 0 2 2]
示例:divmod() 函数处理负值
本例中,我们计算负数除法的商和余数 -
import numpy as np # 创建一个包含负值的一维数组 arr = np.array([-5, -9, -11, -14]) # 对标量值 3 执行除法和取模 quotient, remainder = np.divmod(arr, 3) print("商:", quotient) print("余数:", remainder)
输出结果如下 -
商: [-2 -3 -4 -5] 余数: [ 1 0 1 1]
numpy_arithmetic_operations.html