Python 在数组中的值之间插入不同数量的点
例如,我创建了一个大小为50的数组,没有任何值,然后我在其中以随机索引插入3个值,然后我想通过在这些值之间插值来填充数组的其余部分 首先,我创建我的数组:Python 在数组中的值之间插入不同数量的点,python,arrays,python-3.x,interpolation,Python,Arrays,Python 3.x,Interpolation,例如,我创建了一个大小为50的数组,没有任何值,然后我在其中以随机索引插入3个值,然后我想通过在这些值之间插值来填充数组的其余部分 首先,我创建我的数组: n = 50 a = [None]*n 这给了我一个50个插槽的“空阵列”: [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None,
n = 50
a = [None]*n
这给了我一个50个插槽的“空阵列”:
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
然后我手动将随机选择的几个“无”替换为值:
a.pop(0)
a.insert(0,0)
a.pop(10)
a.insert(10,50)
a.pop(49)
a.insert(49,25000)
其中给出了:
[0, None, None, None, None, None, None, None, None, None, 50, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 25000]
我如何填充数组的其余部分,这意味着用我手动添加到数组中的值之间的线性插值计算的实际值替换“非”?我相信有一种聪明的方法可以使用scipy的插值来实现这一点。但解决问题的快速方法可能是:
import numpy as np
interpolated = np.empty(len(l))
min_i = 0
min_v = 0
for i, v in enumerate(l):
if v is not None:
interpolated[min_i: i + 1] = list(np.linspace(min_v, v, i - min_i + 1))
min_i = i
min_v = v
interpolated = list(interpolated)
你能使用numpy、pandas、scipy等图书馆吗?非常感谢jonrsharpe、T先生和ted!这两个答案都给了我很大的帮助,我选择了熊猫的方式,不知道这个图书馆,它很简单!!a=pandas.Series(a).interpolate().values.round(2).tolist()完成了任务!!