【问题标题】:Python - How to create new array of product sums from one array value times all values of anotherPython - 如何从一个数组值乘以另一个数组的所有值创建新的乘积和数组
【发布时间】:2019-03-19 10:25:24
【问题描述】:

例如,我有这两个数组:

a = [1,3,5,7,9] b = [2,4,6]

我想将数组 a 的每个值乘以数组 b 的每个值的乘积之和相加。最终产生一个看起来像的新数组。

[12、36、60、84、108]

我知道:

a = [1,3,5,7,9]
b = [2,4,6]
ab = []                     
for i in range(len(a)):
    for j in range(len(b)):
        ab.append(a[i]*b[j])
print(ab)

但不确定如何添加产品。

感谢您的建议!

【问题讨论】:

  • [sum(i*j for j in b) for i in a]
  • 您的意思是将a 中的每个元素与sum(b) 相乘吗?

标签: python arrays python-3.x list


【解决方案1】:
[sum(i*j for j in b) for i in a]
#[12, 36, 60, 84, 108]

【讨论】:

    【解决方案2】:

    您的意思是将 a 中的每个元素与 sum(b) 相乘吗?此代码将为您完成。

    a = [1,3,5,7,9]
    b = [2,4,6]
    b_sum = sum(b)
    ab = [x * b_sum for x in a]
    

    【讨论】:

      【解决方案3】:

      那为什么不这样:

      [i*sum(b) for i in a]
      

      演示:

      a = [1,3,5,7,9]
      b = [2,4,6]
      print([i*sum(b) for i in a])
      

      输出:

      [12, 36, 60, 84, 108]
      

      【讨论】:

      • 啊哈,a * x + a * y + a * z = a * (x + y + z)
      • @slider 是的,:-)
      【解决方案4】:

      强制 numpy 解决方案

      import numpy as np
      a = np.array([1,3,5,7,9])
      b = np.array([2,4,6])
      np.sum(a[:,None]*b[None,:], axis=1)
      

      输出

      array([ 12,  36,  60,  84, 108])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        相关资源
        最近更新 更多