NumPy - 使用 ufunc 查找最大公约数 (GCD)
使用通用函数查找最大公约数 (GCD)
NumPy 提供了一个名为 numpy.gcd() 的通用函数 (ufunc),用于逐元素计算两个数组的最大公约数 (GCD)。两个整数的最大公约数是能够整除两个数而不留余数的最大正整数。
此函数在处理整数数组时特别有用,因为您需要查找相应元素的最大公约数。
NumPy gcd() 函数
numpy.gcd() 函数用于逐元素计算两个数组的最大公约数。它返回一个新数组,其中包含输入数组中相应元素的最大公约数 (GCD)。
示例
在下面的示例中,我们使用 numpy.gcd() 函数来查找两个数组中元素的最大公约数 −
import numpy as np # 定义两个数组 a = np.array([12, 18, 24]) b = np.array([15, 27, 36]) # 计算元素级的最大公约数 (GCD) gcd_result = np.gcd(a, b) print("数组的最大公约数:", gcd_result)
以下是得到的输出 −
数组:[3 9 12]
NumPy gcd() 函数与标量
numpy.gcd() 函数也可以与标量值一起使用,计算两个单个整数的最大公约数 (GCD)。它的工作方式与数组相同,返回给定标量的 GCD。
示例
在下面的示例中,我们使用 numpy.gcd() 函数来查找两个标量值的 GCD -
import numpy as np # 定义两个标量 a = 48 b = 60 # 计算标量的 GCD gcd_result = np.gcd(a, b) print("标量的 GCD:", gcd_result)
这将产生以下结果 -
标量的 GCD:12
多维的 GCD数组
numpy.gcd() 函数也可以应用于多维数组。它计算数组中每个对应元素的最大公约数 (GCD),处理任何形状的数组,只要它们可以广播到相同的形状即可。
示例
在下面的示例中,我们使用 numpy.gcd() 函数逐个元素计算两个二维数组的最大公约数 −
import numpy as np # 定义两个二维数组 a = np.array([[14, 21], [35, 49]]) b = np.array([[7, 14], [21, 28]]) # 计算逐个元素的最大公约数 (GCD) gcd_result = np.gcd(a, b) print("二维数组的最大公约数: ", gcd_result)
结果如下 −
二维数组的最大公约数 (GCD): [[ 7 7] [ 7 7]]
NumPy gcd.reduce() 函数
numpy.gcd.reduce() 函数计算数组元素沿指定轴的最大公约数 (GCD)。这对于查找数组中多个元素的最大公约数 (GCD) 非常有用。
示例
在下面的示例中,我们使用 numpy.gcd.reduce() 函数查找数组中所有元素的最大公约数 -
import numpy as np # 定义一个数组 a = np.array([60, 90, 150]) # 计算所有元素的最大公约数 gcd_result = np.gcd.reduce(a) print("所有元素的最大公约数:", gcd_result)
这将产生以下结果 -
所有元素的最大公约数:30