在数组中的值之间插入不同数量的点[重复]

问题描述 投票:0回答:1

我创建了一个大小为 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, 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]

如何填充数组的其余部分,即用我手动添加到数组中的值之间的线性插值计算出的实际值替换“无”?

python arrays python-3.x interpolation
1个回答
0
投票

我确信有一种聪明的方法可以使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.