从两个数组的乘积逐元素创建一个数组

时间:2020-06-02 07:47:32

标签: python arrays python-3.x numpy element

我有一个项目,其中在将数组相乘之后,我必须将它们安排到一个单独的数组中(按元素排列)并获得它们的总和。

As an example:
a = [1, 0, 1]
b = [[3,5,2], [5,4,3], [5,2,2]]
c = a*b
c = [ [3, 5, 2]
      [0, 0, 0]
      [5, 2, 2] ]

现在,我想将答案明智地放在单个数组元素中,例如:

r1 = [3, 0, 5]
r2 = [5, 0, 2]
r3 = [2, 0, 2]

然后,求和。

sum_r1 = [8]
sum_r2 = [7]
sum_r3 = [4]

到目前为止,我只能对乘法进行编码。我仍在为后续步骤尝试适当的代码。我的代码如下:

 [EDIT]
 def fitness_score(a, b):
   c = numpy.multiply(a, b)
   trns = numpy.transpose(c)
   s = numpy.sum(trns, axis=1)
   return s

输出给出了答案,但它有如下错误:ValueError:操作数不能与形状(500,3)(3,3)一起广播。请注意,a中的值是随机获得的。

任何帮助将不胜感激!预先谢谢你!

1 个答案:

答案 0 :(得分:1)

您可以使用NumPy,只需在第二个矩阵上使用转置即可获得所需的结果。

exit()

如果您有一个import numpy as np a = [1, 0, 1] b = [[3,5,2], [5,4,3], [5,2,2]] a = np.array(a) b = np.array(b) mul = a*b.T #array([[3, 0, 5], # [5, 0, 2], # [2, 0, 2]]) s = np.sum(a*b.T, axis=1) #array([8, 7, 4]) 形的数组。您可以尝试以下方法:

500 by 3