【发布时间】:2024-05-24 00:00:02
【问题描述】:
使用np.interp(query, x, y) 有时会产生与我在 Excel 中计算的结果相同的结果。这是np.interp()和Excel一致的情况:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'x': [-9.210,-6.908,-4.605,-2.303,0.000,2.303],
'y': [-1.867,-1.867,-2.027,-3.667,-7.850,-21.112]}
)
val = -7.313
test1 = np.interp(val, df['x'], df['y'])
而print(test1) 产生-1.867。这与我在 Excel 中计算的结果完全相同(我们的查询值在黄色值之间):
但是,test2 = np.interp(val, df['y'], df['x']) 产生 2.303。在 Excel 中,我计算了-0.2956,这看起来是正确的,因为我们的查询值介于黄色值之间。
在 numpy 中是否存在某种奇怪的行为,当尝试插值时,它会从负数到零到正数感到困惑?我已经用一个更加描述化的数据框(50 行而不是这 6 行)尝试了这个,并且值总是按递增顺序排列,我遇到了同样的问题。
【问题讨论】:
-
scipy interpolate 按预期执行:
f = interpolate.interp1d(df['y'], df['x'])...test2 = f(val)返回 -0.2956
标签: python numpy interpolation