Numpy.gcd 使用了 2 个以上的数组

Numpy.gcd using more than 2 arrays

我想知道是否可以使用 numpy.gcd() 计算 2 个以上数组的最大公约数。 对 x、y、z 使用以下数组:

import numpy as np
x = np.array([[4,6,28],[2,5,6]])
y = np.array([[2,1,7],[7,23,6]])
z = np.array([[3,0,4],[7,4,3]])

这里是采用 3 个数组的 gcd 代码:

result = np.gcd(x,y,z)

这导致:

array([[2, 1, 7],
   [1, 1, 6]])

结果[0,2]

7

这不是 7 应该是 1 吗?给定数字 28、7、4,以下 returns 1.

numpy.gcd.reduce([28, 7, 4])

所以我的问题是,如果我在某个时候犯了错误,或者 numpy.gcd not 是否能够将 3 个数组作为输入并简单地计算 gcd它接收的前两个数组作为输入?

来自https://numpy.org/doc/stable/reference/generated/numpy.gcd.html

函数签名是这样的:

def numpy.gcd(x1, x2, /, out=None, *, ...):

如果你用三个参数调用 gcd,你基本上就是在做 z = gcd(x, y)。因此,您需要提出自己的功能。可能类似于

def my_gcd(x, y, z):
    return np.gcd(np.gcd(x, y), z)

这会 return

[[1 1 1]
 [1 1 3]]