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

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


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 中的值是随机获得的。


任何帮助,将不胜感激!先感谢您!


跃然一笑
浏览 129回答 1
1回答

慕少森

您可以使用 NumPy,只需在第二个矩阵上使用转置即可获得所需的结果。import numpy as npa = [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])如果您有 a 的500 by 3异形数组。你可以试试这个:import numpy as npa = [[1, 0, 1] for _ in range(500)]b = [[3,5,2], [5,4,3], [5,2,2]]a = np.array(a)b = np.array(b)mul = [a_c*b.T for a_c in a]#array([[3, 0, 5],#       [5, 0, 2],#       [2, 0, 2]])s = np.sum(mul, axis=-1)print(s)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python