【问题标题】:Numpy.gcd using more than 2 arraysNumpy.gcd 使用超过 2 个数组
【发布时间】:2022-01-18 13:27:07
【问题描述】:

我想知道是否可以使用 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

这不应该是 1 而不是 7 吗?给定数字 28、7、4,以下返回 1。

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

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

【问题讨论】:

    标签: python arrays numpy greatest-common-divisor


    【解决方案1】:

    来自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)
    

    会返回

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

    【讨论】:

    • 感谢您的帮助。我确实想知道函数签名 x1 和 x2 是否意味着它仅限于两个数组,很高兴得到您的确认。
    猜你喜欢
    • 2019-08-31
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多