【发布时间】:2021-04-28 04:55:00
【问题描述】:
有没有一种方法可以将xy_mean 函数转换为使用pandas 库进行计算,就像y_mean 函数一样。我发现 pandas 函数 Y_mean = pd.Series(PC_list).rolling(number).mean().dropna().to_numpy() 比 numpy 版本 ym = (np.convolve(PC_list, np.ones(shape=(number)), mode='valid')/number)[:-1] 快得多。 xy_mean 的等式将是 ((index of value)*value + (index of value)*value)/number 索引号将取决于变量 numbers 的值。因此,下面示例的第一组计算将是(457.334015*1 + 424.440002*2 +394.795990*3)/number,下一组数字将是 (424.440002*2 +394.795990*3 + 408.903992*4)/number,依此类推。如果number = 4 则第一组计算将是(457.334015*1 + 424.440002*2 +394.795990*3 +408.903992*4)/number。设置的平均值计算将一直持续到 PC_list 数组的末尾。
变量:
number = 3
PC_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])
香草python版本:
y_mean = sum(PC_list[i:i+number])/number
xy_mean = sum([x * (i + 1) for i, x in enumerate(PC_list[i:i+number])])/number
Numpy 版本:
y_mean = (np.convolve(PC_list, np.ones(shape=(number)), mode='valid')/number)[:-1]
xy_mean = (np.convolve(PC_list, np.arange(number, 0, -1), mode='valid'))[:-1]
熊猫版
Y_mean = pd.Series(PC_list).rolling(number).mean().dropna().to_numpy()
xy_mean = ?
【问题讨论】:
标签: python pandas function numpy iterator