【问题标题】:Nested for loop to multiply two lists by two variables python 3嵌套for循环将两个列表乘以两个变量python 3
【发布时间】:2017-11-17 02:39:14
【问题描述】:

我正在将 CSV 文件导入 Python,然后使用 x 和 y 值执行最小二乘回归。到目前为止我的程序:

  • 打开 CSV 文件并以逗号分隔
  • 创建两个由 X 和 Y 组成的列表(分别为 x_list 和 y_list)
  • 计算所有 X 值的平均值,并对所有 Y 的值(分别为 x_avg 和 y_avg)

我找不到斜率的分子:

sum((Xi - X avg) * (Yi - Y avg))

我正在使用嵌套的 for 循环,但我的 m_num(斜率分子)返回的结果不正确。

def compute_numerator(x_list, y_list, x_avg, y_avg):
    m_num = 0                                                                                                                                 
    xi = []
    yi = []
    multiples = []
    xi = [(x - x_avg) for x in x_list]
    yi = [(y - y_avg) for y in y_list]
    for x in xi:
        for y in yi:
            multiples = [x * y]
    m_num = sum(multiples)
    print(m_num)
    return m_num

我需要 m_num 来返回 (X - X 的平均值) * (Y - Y 的平均值) 的所有值的总和

欢迎任何建议或批评!尝试学习并养成良好的编程习惯。感谢您的宝贵时间!

【问题讨论】:

  • 你不需要显式循环来处理这些,除了可能读取文件,包括平均值,这只是sum(list_x) / len(list_x)

标签: python python-3.x list for-loop nested


【解决方案1】:

如果您希望x_list,y_list 中的每个 (x, y) 值相互配对,则可以这样做:

sum((x-x_avg)*(y-y_avg) for x, y in zip(x_list, y_list))

您的问题是您没有将它们配对,而是将每个 x 值与所有 y 值相加,如下所示:

sum((x-x_avg)*(y-y_avg) for x, y in x_list for y in y_list)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2020-06-09
    • 2021-09-15
    • 2012-03-30
    相关资源
    最近更新 更多