大家好,我正在熟悉 Python 并且遇到了一个问题 所以我试图仅使用 for 循环和列表推导式来获取矩阵的平均值。
这是代码:
def vector_mean(vectors):
"""Computes the element-wise average"""
for v in vectors: # Returns [1,2],[3,4],[5,6]
return(sum(v[i]/len(v)) for i in range(v))
assert vector_mean([[1, 2], [3, 4], [5, 6]]) == [3, 4]
vector_mean([[1, 2], [3, 4], [5, 6]])
所以问题是 Sum 方法在迭代矩阵(向量均值)时存在问题 运行后出现以下错误:
类型错误:“列表”对象不能解释为整数
任何人都可以帮助我并用我的代码解决这个问题吗? 或者如果您可以编辑我的代码并将其修复,那就太好了。
我相信
return(sum(v[i]/len(v)) for i in range(v)) part
应该获取每个较小列表中的第一个数字(1,3,5),然后将它们相加并除以 v 的长度。
下面我对您的尝试进行了修改。在
vector_mean
函数中,我一次计算每个子列表的一个元素的平均值。因此,对于这个示例,我首先创建 [1,3,5]
,然后计算平均值 3
,在下一个 for
循环中,我创建 [2,4,6]
并计算平均值 4
。
def vector_mean(vectors):
"""Computes the element-wise average"""
nr_elements = len(vectors[0])
mean_vec = []
for i in range(nr_elements):
mean_vec.append(sum([
vec[i] for vec in vectors
]) / len(vectors))
return mean_vec
assert vector_mean([[1, 2], [3, 4], [5, 6]]) == [3, 4]
vector_mean([[1, 2], [3, 4], [5, 6]])