0

我对 python 很陌生,我正在尝试从我的数据中实现 MSE(均方误差)。我正在尝试访问列表中的每个元素并从平均值中减去原始数据并在最后将其平方以用于单独的步骤,以便我可以在最后将其总结并除以列表中的元素总数。

现在,我只是尝试访问列表中的每个元素并找到差异并将其放入新创建的列表 newList 中。

这是我当前的代码:

for i in range(len(X)):
    newList[i] = X[i] - tempList[i]

起初,我试着做

for i in range(len(X)):
    newList[i] = X[i] - mean

但是,这给了我 typeError 说我不能从列表中减去浮点数。

因此,我尝试创建一个名为 tempList 的新列表,并通过执行以下操作将平均值放入列表中:

for i in range(len(X)):
    tempList.insert(i, mean) #now my tempList contains [3.995, 3.995, 3.995 ....., 3.995]

现在它给了我相同的 typeError:unsupported operand type(s) for -: 'list' 和 'float'。

我更熟悉 java 和其他 C 语言,我认为这是您编辑列表中每个元素的方式,但我猜 Python 是不同的(显然)。

任何提示将不胜感激。

提前致谢。

4

1 回答 1

1

您在代码的其他地方有问题,这就是您收到类型错误的原因。你展示的片段是完全合法的。

    X = [ 2, 12, 85, 0, 6 ]
    tempList = [ 3, 4, 3, 1, 0 ]
    newList = list([0] * len(X))

    for i in range(len(X)):
        newList[i] = X[i] - tempList[i]

    print(newList)

无论如何,回到你原来的问题,你可以使用功能风格

    X = [ 2, 12, 85, 0, 6 ]
    mean = sum(X) / float(len(X))
    print(mean)

    Y = map(lambda x: x - mean, X)
    print(Y)
于 2017-10-09T23:01:36.993 回答