Python 将两个numpy ndarray在一个特定范围内分组,并计算该范围内另一个的平均值和分布 我不确定我是不是在问正确的问题,但是考虑两个NDAREX x和 y>代码>:< /p> 将numpy导入为np 将matplotlib.pyplot作为plt导入 N=1000 T=1.0/800.0 x=np.linspace(0.0,N*T,N) y=np.sin(2.0*np.pi*x)+0.5*np.sin(3*2.0*np.pi*x)\ +0.1*np.随机均匀(-1.0,1.0,N) 平面图(x,y) plt.show()

Python 将两个numpy ndarray在一个特定范围内分组,并计算该范围内另一个的平均值和分布 我不确定我是不是在问正确的问题,但是考虑两个NDAREX x和 y>代码>:< /p> 将numpy导入为np 将matplotlib.pyplot作为plt导入 N=1000 T=1.0/800.0 x=np.linspace(0.0,N*T,N) y=np.sin(2.0*np.pi*x)+0.5*np.sin(3*2.0*np.pi*x)\ +0.1*np.随机均匀(-1.0,1.0,N) 平面图(x,y) plt.show(),python,numpy,statistics,Python,Numpy,Statistics,将x分组到长度为M的范围中的类型。现在我想在下面的伪代码中使用y\u m和y\u v: y_m = average of `y`es for x_2_(i-1) < x < x_2_(i) y_v = variance of `y`es for x_2_(i-1) < x < x_2_(i) p.S.2.一个想法是根据x对压缩后的(x,y)进行排序,然后重塑数据线,然后计算特定轴的平均值和方差 因此,我开始实施我在p.S.2.原始帖子中提出的想法,使用numpy的重塑功

x
分组到长度为
M
的范围中的类型。现在我想在下面的伪代码中使用
y\u m
y\u v

y_m = average of `y`es for x_2_(i-1) < x < x_2_(i)
y_v = variance of `y`es for x_2_(i-1) < x < x_2_(i)

p.S.2.一个想法是根据
x
对压缩后的
(x,y)
进行排序,然后重塑数据线,然后计算特定轴的平均值和方差

因此,我开始实施我在p.S.2.原始帖子中提出的想法,使用numpy的
重塑功能:

MM=10
x_2=np.linspace(x.min(),x.max(),N//MM)
z=y[(N%MM):]重塑((N-(N%MM))//MM,MM))
y_m=z.平均值(轴=1)
y_v=z.var(轴=1)
在(x_2,y_m-100*y_v/2,y_m+100*y_v/2,color=“蓝色”)之间填充
plt.绘图(x_2,y_m,color=“红色”)
结果:


现在这个实现有两个主要的缺点,即它假设x数据是均匀分布和排序的,这并不一定总是如此

你能写出for循环吗?这样我们就可以确切地看到你想要实现的目标了?我不确定我是否理解伪代码。如果我这样做,例如:
y_m=y[(x>x_2[I-1])&(x
那么你只需要一个外循环,但我不确定这就是你想要的?小心
x_2=np.linspace(0.0,N*T/m,N/m)
。你不会考虑X的整个范围,但它的总宽度只有<>代码> 1 /m < /代码>。
y_m = average of `y`es for x_2_(i-1) < x < x_2_(i)
y_v = variance of `y`es for x_2_(i-1) < x < x_2_(i)