gpt4 book ai didi

python - 如何强制两个数组在 pyplot 中使用相等?

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:34 25 4
gpt4 key购买 nike

我正在尝试绘制一个简单的移动平均函数,但生成的数组比完整样本量少了几个数字。如何在延伸到整个样本量的更标准线旁边绘制这样一条线?下面的代码会导致此错误消息:

ValueError: x and y must have same first dimension, but have shapes (96,) and (100,)

这是使用标准的 matplotlib.pyplot。我尝试使用 removedel 删除 X 值,并将所有数组切换为 numpy 数组(因为这是我的移动平均函数的输出格式)然后尝试添加while 循环中追加的 if 条件,但均无效。

import random
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

def movingaverage(values, window):
weights = np.repeat(1.0, window) / window
smas = np.convolve(values, weights, 'valid')
return smas

sampleSize = 100
min = -10
max = 10
window = 5

vX = np.array([])
vY = np.array([])

x = 0
val = 0
while x < sampleSize:
val += (random.randint(min, max))
vY = np.append(vY, val)
vX = np.append(vX, x)
x += 1

plt.plot(vX, vY)
plt.plot(vX, movingaverage(vY, window))
plt.show()

预期结果将是同一张图上的两条线 - 一条是另一条的简单移动平均线。

最佳答案

只需将此行更改为以下内容:

smas = np.convolve(values, weights,'same')

“有效”选项,仅在窗口完全覆盖值数组时才进行卷积。您想要的是“相同”,它可以满足您的需求。


编辑:然而,这也有其自身的问题,因为当您的窗口没有完全位于数据之上时,它就像有额外的值为 0 的数据位一样。如果选择它,可以忽略它,如本解决方案中所做的那样,但另一种方法是用您选择的特定值填充数组(参见 Mike Sperry 的回答)。

关于python - 如何强制两个数组在 pyplot 中使用相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56880018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com