提问人:navidabasi 提问时间:10/13/2023 更新时间:10/20/2023 访问量:51
获取矩阵中元素的平均值
Get the Mean of the elements in a matrix
问:
大家好,我正在熟悉 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 方法在迭代矩阵(vector_mean)时存在问题 并在运行后出现以下错误:
TypeError:“list”对象不能解释为整数
谁能帮我用我的代码解决这个问题? 或者,如果您可以编辑我的代码并将其固定下来,那就太好了。
我相信应该得到每个较小列表中的第一个数字(1,3,5),然后将它们相互相加并将其除以 v 的长度。return(sum(v[i]/len(v)) for i in range(v)) part
答:
0赞
Erik
10/20/2023
#1
下面我对你的尝试进行了修改。在函数中,我一次计算每个子列表的一个元素的平均值。因此,对于这个例子,我首先创建,然后计算平均值,然后在下一个循环中创建并计算平均值。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]])
评论
0赞
navidabasi
10/26/2023
谢谢!我刚刚运行了这段代码,它可以工作,但我必须仔细分析它;谢谢你的时间埃里克!
评论
return
v
range(v)
zip
return [sum(v)/len(v) for v in zip(*vectors)]
v
v
for i in range(v)
range()
range(5)
for i in v
i