weights
是一个具有一定数量值的numpy数组,该数组将与x ^ i相乘。 在不对weights
的元素求和的情况下,如何在同一行的循环中重写此函数?
x = np.array([0,1,2,3])
weights = np.zeros(order + 1)
def estimate(weights, x):
est = 0
for i in range(len(weights)):
est += weights[i] * x ** i
return est
estimate(weights, x)
我想在一行中重写此函数,例如:
est = [(est + (weights[i] * x ** i)) for i in range(len(weights))]
但这不能给我正确的输出。我不明白的是,为什么这两个不相等。如何在一行for循环中处理+=
?我现在可以使用另一个可能被我忽略的关键字吗?
编辑:
这实际上是正确的答案:
est = sum([(weights[i] * (x ** i)) for i in range(order + 1)])
我的代码中还有另一个错误,使我无法获得与该语句无关的正确结果。
对于所有的麻烦我深表歉意。
答案 0 :(得分:1)
它只是该理解列表的元素之和:
est = sum([(weight * x ** i) for i, weight in enumerate(weights)])
答案 1 :(得分:1)
遵循单线操作即可满足您的需求:
est = sum([(weight * x ** i) for i, weight in enumerate(weights)])