将列插值到目标 x 坐标后出现意外结果
unexpected result after interpolating columns to target x-coordinates
我正在使用 np.interp
将 csv 文件中的两列数据线性插入到目标(预期)值列表中。我将目标值转换为 numpy 数组。 csv 文件中的每一行对应于目标数据中的每个值。
这是一个数据样本:
x= [246.72, 8.59, 194.4 , 145.73, 198.27]
v11 v12
22.028949 22.863912
0 9.006818
134.238326 102.571956
94.222921 107.823484
200.163640 212.396264
脚本:
df['intrepo_v'] = pd.Series(dtype= 'float')
df['intrepo_v'] = np.interp(x, df['v11'].values,
df['v12'].values)
结果:
42.579263
22.863912
42.579263
42.579263
42.579263
此插值的目的是创建 intrepo_v
并将值从 v11
和 v12
移动到一些接近 x
的值。目前结果不接近 v11
、v12
或 intrepo_v
。谁能提出解决这个问题的方法?
对于 numpy.interp 值必须递增(请参阅帮助),scipy 不假定值已排序,请尝试:
import scipy
function=scipy.interpolate.interp1d(df['v11'].values,df['v12'].values)
df['intrepo_v'] =function(x)
或者使用 numpy
对输入值进行排序
我正在使用 np.interp
将 csv 文件中的两列数据线性插入到目标(预期)值列表中。我将目标值转换为 numpy 数组。 csv 文件中的每一行对应于目标数据中的每个值。
这是一个数据样本:
x= [246.72, 8.59, 194.4 , 145.73, 198.27]
v11 v12
22.028949 22.863912
0 9.006818
134.238326 102.571956
94.222921 107.823484
200.163640 212.396264
脚本:
df['intrepo_v'] = pd.Series(dtype= 'float')
df['intrepo_v'] = np.interp(x, df['v11'].values,
df['v12'].values)
结果:
42.579263
22.863912
42.579263
42.579263
42.579263
此插值的目的是创建 intrepo_v
并将值从 v11
和 v12
移动到一些接近 x
的值。目前结果不接近 v11
、v12
或 intrepo_v
。谁能提出解决这个问题的方法?
对于 numpy.interp 值必须递增(请参阅帮助),scipy 不假定值已排序,请尝试:
import scipy
function=scipy.interpolate.interp1d(df['v11'].values,df['v12'].values)
df['intrepo_v'] =function(x)
或者使用 numpy
对输入值进行排序