为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2022-12-20 13:54:17
我有一个项目,其中,在将数组相乘之后,我必须将它们排列成一个单独的数组(按元素)并得到它们的总和。As an example:a = [1, 0, 1]b = [[3,5,2], [5,4,3], [5,2,2]]c = a*bc = [ [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 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

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


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])

如果您有 a 的500 by 3异形数组。你可以试试这个:


import numpy as np

a = [[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)


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号