获取矩阵中元素的平均值

问题描述 投票:0回答:1

大家好,我正在熟悉 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 的长度。

python list sum list-comprehension
1个回答
0
投票

下面我对您的尝试进行了修改。在

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]])
© www.soinside.com 2019 - 2024. All rights reserved.