散点数据 - 缩放 x 轴以完成范围并插入剩余的 y 数据点

我有随机 X 作为整数的 XY 散点数据。我想要具有均匀 X 分布的输出数据并插入缺失的 Y。


我会创建一个具有 x 范围的数组并填充它。然后运行一个循环来填充新数组中的 Y,然后插入剩余的。


不过,这对我来说似乎非常低效。有没有更好的方法来做到这一点?我对 python 相当陌生,想知道像 numpy 这样的模块是否内置了有效的解决方案?


澄清

一下:排序后我有一组这样的散点数据


[[1 , 0.1],  

 [3 , 0.2],  

 [5 , 0.4]]

并想要一个这样的数组


[[1 , 0.1],  

 [2 , 0.15],  

 [3 , 0.2],

 [4 , 0.3],  

 [5 , 0.4]]


白猪掌柜的
浏览 164回答 2
2回答

九州编程

numpy.interp正是您要寻找的。它采用表格中的函数,即一组 (x,y) 并计算任何新 x 的线性插值。考虑以下产生所需结果的代码:import numpy as npa = np.array([[1 , 0.1], [3 , 0.2],   [5 , 0.4]])# a requested range - we fill in missing integer values.new_x = range(1,6)# perform interpolation. Origina array is sliced by columns.new_y = np.interp(new_x, a[:, 0], a[:, 1])# target array is zipped together from interpolated x a ynp.array(list(zip(new_x, new_y))).tolist()[[1.0, 0.1], [2.0, 0.15000000000000002], [3.0, 0.2], [4.0, 0.30000000000000004], [5.0, 0.4]]

HUX布斯

您可以使用np.interp。作为一个简单的例子:import numpy as npx = np.array([0,1,2,4])y = np.array([0.1,0.2,0.3,0.6])# do the linear interpolationnew_x = np.arange(0,5,1)new_y = np.interp(new_x, x, y)这给出了一个new_y:[0.1,0.2,0.3,0.45,0.6]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python