Python 在没有for循环的情况下,使用顺序和平均值计算遍历numpy数组

Python 在没有for循环的情况下,使用顺序和平均值计算遍历numpy数组,python,numpy,linear-regression,mean,numpy-ndarray,Python,Numpy,Linear Regression,Mean,Numpy Ndarray,我正在尝试将这个for循环转换为numpy函数。y\u mean函数从列表中立即检查numbers变量中规定的数字量,然后打印出其平均值,因此,它计算457.334015424.440002的平均值,然后计算424.440002394.795990的平均值,依此类推,直到到达列表的末尾。对于xy_平均值,y将乘以x的位置顺序。因此,由于前两个数字是457.334015424.440002,因此计算将是(1*457.334015+2*424.440002)/number),第二个和第三个数字将是(

我正在尝试将这个for循环转换为numpy函数。
y\u mean
函数从
列表中立即检查
numbers
变量中规定的数字量,然后打印出其平均值,因此,它计算
457.334015424.440002的平均值,然后计算
424.440002394.795990的平均值,依此类推,直到到达
列表的末尾。对于
xy_平均值
,y将乘以x的位置顺序。因此,由于前两个数字是
457.334015424.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()

假设OP要将值附加到列表中,并且
PC\u list
只是另一个与
list\u
大小相同的列表,则可以使用
np.convolve

import numpy as np

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])

PC_list = np.random.rand(len(list_))

number = 2
y_mean_list = []
xy_mean_list = []
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

    y_mean_list.append(y_mean)
    xy_mean_list.append(xy_mean)

ym = (np.convolve(list_, np.ones(shape=(number)), mode='valid')/number)[:-1]
xym = (np.convolve(PC_list, np.arange(number, 0, -1), mode='valid')/number)[:-1]

print(np.allclose(xym, xy_mean_list))
print(np.allclose(ym, y_mean_list))

这里的
PC\u list
是什么?这个代码一点也不清楚,你在循环中计算
y\u意思,你在哪里使用它?每次重新计算时,
y\u mean
的上一个值都会被覆盖。那你为什么要计算这些呢?xy_的意思也是一样,你的意思是计算它们并将它们附加到列表中吗?