gpt4 book ai didi

python - 使用 np.interp 插值缺失值

转载 作者:行者123 更新时间:2023-12-01 04:00:00 55 4
gpt4 key购买 nike

我遇到了以下问题:

使用不同的代码,我生成生成 x 和 y 值、频率和强度的文件。我使用 2 种不同的方法,因此得到 2 组不同的 x,y。这个想法是将一个与另一个标准化以获得标准化通量。然而,辅助代码使用不同的采样率,因为它会自动调整其速率。因此,由于数组的长度不同,因此无法进行标准化!

解决方案对缺失值进行插值。我发现最合适的方法是使用 np.interp。嗯:

这是我的代码:

 #Freq2_f1 is the frequency of File 1 - high sampling rate
#Freq2_f2 is frequency of File2 - low sampling rate
#Inten2_f1 is intensity of File1 - high sampling rate
#Inten2_f2 is intensity of File 2 - low sampling rate

Freq_f2=filearray2[0:num2-3]
Freq1_f2 = list(itertools.chain.from_iterable(Freq_f2))
Freq2_f2=np.array(map(float,Freq1_f2))
Inten_f2=filearray2[num2+1:len(filearray2)]
Inten1_f2 = list(itertools.chain.from_iterable(Inten_f2))
Inten2_f2=np.array(map(float,Inten1_f2))


Inten_int=np.interp(Freq2_f1,Freq2_f2,Inten2_f2)
#Inten_int=griddata(Freq2_f2,Inten2_f2,Freq2_f1,method='linear')
print
print 'Input frequency=highly sampled frequency'
print(Freq2_f1)
print 'Length of input frequency',len(Freq2_f1)
print 'Frequency of less sampled data'
print(Freq2_f2)
print 'Length of less sampled intensity', len(Freq2_f1)
print 'Intensity of less sampled data'
print(Inten2_f2)
print 'Length of less sampled frequency', len(Freq2_f2)
print 'Output array of np.interp '
print(Inten_int)
print 'Length of interpolated intensity', len(Inten_int)

这就是它的结果:正如您所看到的,输出数组 Inten_int 只是 1.051e-02 的常量!

Input frequency=highly sampled frequency
[ 6.87718000e+01 6.86571000e+01 6.85425900e+01 ..., 3.92414600e-03
3.91760100e-03 3.56145800e-03]
Length of input frequency 9576
Frequency of less sampled data
[ 6.87718000e+01 6.86571000e+01 6.85425900e+01 ..., 3.92347200e-03
3.91692900e-03 3.56145800e-03]
Length of less sampled frequency 5857
Intensity of less sampled data
[ 1.02640000e-36 1.20500000e-36 1.42720000e-36 ..., 1.19530000e-02
1.19260000e-02 1.05100000e-02]
Length of less sampled intensity 5857
Output array of np.interp
[ 1.05100000e-02 1.05100000e-02 1.05100000e-02 ..., 1.05100000e-02
1.05100000e-02 1.02640000e-36]
Length of interpolated intensity 9576

我不知道为什么!频率值按照 np.interp 的要求(单调)增加

我为这么蹩脚的变量命名表示歉意:(

最佳答案

来自docs ,签名为:

np.interp(x, xp, fp, left=None, right=None, period=None)

和:

...

xp: 1-D sequence of floats -- The x-coordinates of the data points, must be increasing if argument period is not specified. ...

(重点是我的。)

您的 xp (Freq2_f2) 看起来在减少 - 没有增加。

Frequency of less sampled data
[ 6.87718000e+01 6.86571000e+01 6.85425900e+01 ..., 3.92347200e-03 3.91692900e-03 3.56145800e-03]

你也许可以尝试:

Inten_int = np.interp(Freq2_f1, Freq2_f2[::-1], Inten2_f2[::-1])

关于python - 使用 np.interp 插值缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749786/

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