我是python的新手,因此有点迷失了,我尝试通过执行以下操作以更Pythonic的方式创建for循环:
result=[result +coefficient[j]*vector[j]for j in range(c)]
所以我有一个c系数列表和一个c向量列表,我想像上面的代码一样添加它们的乘积,为此,在for循环中,我将从一个空向量开始并将其加引导其余术语,但是这种方式不起作用。
例如,如果值是以下值:
c=3
coefficient =[ 1, 2,3]
Vector=[[3,3,3],[2,2,2],[1,1,1]]
我应该获得:
result=[10,10,10]
答案 0 :(得分:1)
这里是列表理解的Python方式:
>>> coefficient =[ 1, 2,3]
>>> vector=[[3,3,3],[2,2,2],[1,1,1]]
>>>
>>> vxc=[ [c*v_item for v_item in v] for (c,v) in zip(coefficient, vector)]
>>> print(vxc)
[[3, 3, 3], [4, 4, 4], [3, 3, 3]]
>>>
>>> result=[ sum(x) for x in zip(*vxc) ]
>>> print(result)
[10, 10, 10]
答案 1 :(得分:0)
如果我对您的理解是正确的,那么这应该起作用:
result = [coefficient[j]*vector[j] for j in range(c)]
答案 2 :(得分:0)
尝试
coefficients = [1,4]
vector = [6,7]
result = [vector[j] * coefficients[j] for j in range(len(vector))]
print(result)
输出
[6, 28]
答案 3 :(得分:0)
这是一个需要两个步骤的答案:
coeff = [1,2,3]
vector = [[3,3,3],[2,2,2],[1,1,1]]
v_times_coeff = [ [coeff[i] * x for x in vector[i]] for i in range(3)]
answer = [ sum([x[i] for x in v_times_coeff ]) for i in range(3)]
答案 4 :(得分:0)
您的操作是矩阵乘法。使用numpy
软件包很容易做到这一点:
import numpy as np
a = np.array([1,2,3])
b = np.array([[3, 3, 3], [2, 2, 2], [1, 1, 1]])
result = a @ b
如果您使用的Python版本<3.5,则必须使用numpy.matmul
方法:
result = np.matmul(a, b)