从两个数组的乘积创建一个数组元素
Creating an array element-wise from product of two arrays
我有一个项目,其中,在将数组相乘后,我必须将它们排列成一个单独的数组(按元素)并得到它们的总和。
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中的值是随机获取的
如有任何帮助,我们将不胜感激!提前致谢!
您可以使用 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])
如果你有一个 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)
我有一个项目,其中,在将数组相乘后,我必须将它们排列成一个单独的数组(按元素)并得到它们的总和。
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中的值是随机获取的
如有任何帮助,我们将不胜感激!提前致谢!
您可以使用 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])
如果你有一个 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)