我对python很新,并试图遵循有关向量的教程
我有以下代码:
def vector_add(v, w):
return [v_i + w_i for v_i, w_i in zip(v, w)]
def vector_subtract(v, w):
return [v_i - w_i for v_i, w_i in zip(v, w)]
def vector_sum(vectors):
return reduce(vector_add, vectors)
def scalar_multiply(c, v):
#c is a line v is a vector
return [c * v_i for v_i in v]
def vector_mean(vectors):
#compute the vectors whose ith element is the mean of the ith elements of the input vectors
n = len(vectors)
return scalar_multiply(1/n, vector_sum(vectors))
vector_mean([1,2,3,4])
我收到以下错误:
Traceback (most recent call last):
File "vectors.py", line 21, in <module>
vector_mean([1,2,3,4])
File "vectors.py", line 20, in vector_mean
return scalar_multiply(1/n, vector_sum(vectors))
File "vectors.py", line 11, in vector_sum
return reduce(vector_add, vectors)
File "vectors.py", line 5, in vector_add
return [v_i + w_i for v_i, w_i in zip(v, w)]
TypeError: zip argument #1 must support iteration
我猜这是因为我传了一个整数或者其他东西,但我不确定? 任何关于为什么会发生这种情况以及如何解决此错误的帮助将非常感激。 谢谢, 斯科特
答案 0 :(得分:0)
print vector_mean([[1,2,3,4], [22,23,34,44]])
并将该字符串修复为:
scalar_multiply(1/float(n), vector_sum(vectors))
(强制分裂为浮动):