【问题标题】:Is there a method in numpy to multiply every element in an array?numpy中是否有一种方法可以将数组中的每个元素相乘?
【发布时间】:2017-05-27 04:03:54
【问题描述】:

我想将 numpy 数组中的所有元素相乘。如果有像[1, 2, 3, 4, 5] 这样的数组,我想得到1 * 2 * 3 * 4 * 5 的值。

我通过自己的方法尝试过,但是数组的大小非常大,计算需要很长时间,因为我使用的是numpy,如果numpy支持这个操作会很有帮助。

我试图通过numpy文档找出来,但我失败了。有没有一种方法可以执行此操作?如果有,有没有办法沿着矩阵中的等级获取值?

【问题讨论】:

    标签: python numpy multiplication


    【解决方案1】:

    我相信你需要的是 numpy.prod。

    来自documentation

    示例

    默认情况下,计算所有元素的乘积:

    >>> np.prod([1.,2.])
    2.0
    

    即使输入数组是二维的:

    >>> np.prod([[1.,2.],[3.,4.]])
    24.0
    

    但我们也可以指定相乘的轴:

    >>> np.prod([[1.,2.],[3.,4.]], axis=1)
    array([  2.,  12.])
    

    所以对于你的情况,你需要:

    >>> np.prod([1,2,3,4,5])
    120
    

    【讨论】:

      【解决方案2】:

      你可以这样使用:

      import numpy as np
      my_array = np.array([1,2,3,4,5])
      result = np.prod(my_array)
      #Prints 1*2*3*4*5
      print(result)
      

      Here is the documentation of numpy.prod
      以下是上面链接的摘录:

      默认情况下,计算所有元素的乘积:

      >>> np.prod([1.,2.])
      2.0
      

      即使输入数组是二维的:

      >>> np.prod([[1.,2.],[3.,4.]])
      24.0
      

      但我们也可以指定相乘的轴:

      >>> np.prod([[1.,2.],[3.,4.]], axis=1)
      array([  2.,  12.])
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      • 我不确定您从接受的答案中复制粘贴是否合适。我知道接受的答案是从文档中复制粘贴的,但是您也复制粘贴完全相同的内容,因此使您的答案与接受的答案几乎相同似乎不合适。接受的答案是从文档中复制粘贴的并不是很清楚,因此我对其进行了编辑以使其清楚。但是,只有当您的解决方案与其他答案不同时,您才应该发布自己的答案。
      • "如果您检查他的编辑,当我发布我的答案时,他没有包含任何示例代码。" 这不是真的。 This 是另一个答案的原始版本。从那时起,他只添加了最后一段(“所以在你的情况下你需要......”),然后我对其进行了编辑以将其格式化为引用。你可以检查here。此外,对于您的答案,在您的代码之前添加类似“您可以使用numpy.prod”之类的内容就足够了。
      【解决方案3】:

      除了其他答案,每个numpy.array 都有prod() 方法可以使用。

      一个例子如下:

      >>> np.array([6, 2, 3]).prod()
      36
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多