【发布时间】:2021-04-17 00:20:32
【问题描述】:
我试图把这个 for 循环变成一个 numpy 函数。 y_mean 函数从list_ 一次检查numbers 变量中声明的数字量,然后打印出它的平均值,因此它计算457.334015,424.440002 的平均值,然后计算424.440002,394.795990 的平均值等等直到它到达list 的末尾。对于xy_mean,y 将乘以 x 的位置顺序。因此,由于前 2 个数字是 457.334015,424.440002,因此计算结果将是 (1 * 457.334015+ 2 * 424.440002)/number),第二个和第三个数字将是 (2* 424.440002+ 3* 394.795990)/number。如果不使用 for 循环,如何将这两个函数转换为 numpy 形式。
原版形式:
list_ = [457.334015,424.440002,394.795990,408.903992,398.821014,402.152008,435.790985,423.204987,411.574005,
404.424988,399.519989,377.181000,375.467010,386.944000,383.614990,375.071991,359.511993,328.865997,
320.510010,330.079010,336.187012,352.940002,365.026001,361.562012,362.299011,378.549011,390.414001,
400.869995,394.773010,382.556000]
number = 2
for i in range(len(list_)-number):
y_mean = sum(list_[i:i+number])/number
xy_mean = sum([x * (i + 1) for i, x in enumerate(PC_list[i:i+number])])/number
Numpy 形式:
list_= np.array([457.334015,424.440002,394.795990,408.903992,398.821014,402.152008,435.790985,423.204987,411.574005,
404.424988,399.519989,377.181000,375.467010,386.944000,383.614990,375.071991,359.511993,328.865997,
320.510010,330.079010,336.187012,352.940002,365.026001,361.562012,362.299011,378.549011,390.414001,
400.869995,394.773010,382.556000])
number = 2
y_mean = list_.mean()
【问题讨论】:
-
这里的
PC_list是什么? -
这段代码根本不清楚,你在循环计算
y_mean,你在哪里使用它?每次重新计算时,y_mean的先前值都会被覆盖。那你为什么要计算所有这些? xy_mean 也是如此,您的意思是计算它们并将它们附加到列表中吗?
标签: python numpy linear-regression mean numpy-ndarray