为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白猪掌柜的 2021-11-16 14:56:50
我有随机 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]]
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

numpy.interp正是您要寻找的。


它采用表格中的函数,即一组 (x,y) 并计算任何新 x 的线性插值。


考虑以下产生所需结果的代码:


import numpy as np


a = 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 y


np.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]]


查看完整回答
反对 回复 2021-11-16
?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以使用np.interp。


作为一个简单的例子:


import numpy as np


x = np.array([0,1,2,4])

y = np.array([0.1,0.2,0.3,0.6])


# do the linear interpolation

new_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]


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信