x 数组从负到正的意外 numpy 插值行为(按递增顺序排列)
Unexpected numpy interpolation behavior for x array spanning negative to positive (ordered as increasing)
使用 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 行),并且值始终按递增顺序排列,我遇到了同样的问题。
预测值列中的值必须按升序排列。 (注意:-21 在数轴上小于 -1.8,-1 小于 1。)使用 sort_values 将数据框按 y 列升序排序,然后输出匹配你的 Excel 输出.
df1=df.sort_values(by="y")
test3= np.interp(val, df1["y"], df1["x"])
print(test3)
-0.29565168539325837
使用 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 行),并且值始终按递增顺序排列,我遇到了同样的问题。
预测值列中的值必须按升序排列。 (注意:-21 在数轴上小于 -1.8,-1 小于 1。)使用 sort_values 将数据框按 y 列升序排序,然后输出匹配你的 Excel 输出.
df1=df.sort_values(by="y")
test3= np.interp(val, df1["y"], df1["x"])
print(test3)
-0.29565168539325837