因此,我有股票市场数据(从0开始及收盘价),并使用numpy.fft计算快速傅立叶变换和相应的频率,然后以压缩列表的形式显示这些信息, ,频率'。我使用以下方法将“频率”值分成垂直对数格:
logbins = np.logspace(Min(logX),max(logX),numbins=10, base=10.0
然后,我将“频率”值数字化到这些容器中并使用:
for k in range(1,len(freqlogbins)):
mean_freq.append(np.mean(Tfreq2[freqdig==k]))
效果很好,但是我还需要以某种方式计算出每个bin中的
y
值的平均值。我想以某种方式将
x
中的ZippedList[0,i]
值引用为y
但无法完全解决。
这是可复制代码的示例:
import numpy as np
T_date0=np.arange(0,400)
T_price=np.random.uniform(100,400, size=400)
T_fft=np.fft.fft(T_price)
Tfreq=np.fft.fftfreq(T_date0.shape[-1])
然后,我使用以下方法消除所有负频率值和相应的fft值:
Tfreq2=[]
T_fft2=[]
for i in range(len(Tfreq)):
if Tfreq[i]>0:
Tfreq2.append(Tfreq[i])
T_fft2.append(T_fft[i])
T_fft_absSq=(np.absolute(T_fft2))**2
logTFAS=np.log10(T_fft_absSq)
logTfreq=np.log10(Tfreq2)
numbins=10
logbins=np.logspace((min(logTfreq)-0.00000001),(max(logTfreq)+0.00000001),num=numbins, base=10.0) #The +/-0.00000001 are so that the endpoints lie in the bin intervals.
Tfreq2=np.array(Tfreq2)
TFAS=np.array(T_fft_absSq)
freqdig=np.digitize(Tfreq2,logbins)
mean_freq=[]
mean_fft=[]
for k in range(1,len(logbins)):
mean_freq.append(np.mean(Tfreq2[freqdig==k]))
Fourier=zip(logTfreq,logTFAS)
##This is where I need to work out the mean of the y values, in the vertical bins
数据如下所示,黑色虚线表示分箱,黄色虚线表示每个分箱中x值的平均值。蓝线是二阶多项式拟合。
显然,对于随机数据,它与我在下面发布的链接看起来有些不同,但是它提供了一个思路。
最佳答案
我想得太多...
使用频率合并,我能够以非常相似的方式计算y值平均值:
for k in range(1,len(logbins)):
mean_freq.append(np.mean(np.array(logTfreq)[freqdig==k]))
mean_fft.append(np.mean(np.array(logTFAS)[freqdig==k]))
关于python - 垂直箱中y值的平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27251864/