【发布时间】:2020-08-31 23:01:20
【问题描述】:
我正在为一些列表做插值。
我的一些数据超出了范围,我该如何做一个简单的限制来解决这个问题?
例如,我的列表之一如下所示:
testList = [[(0.0, -0.9960135495794032), (0.5, -1.0)], [(0.5, -1.0), (2.0, -0.16138322487766676), (2.5, 1.0849272141417852)]]
我想进行插值以找到 (x, y=0) 和 (x, y=-1)。
我知道左侧部分 [(0.0, -0.9960135495794032), (0.5, -1.0)] 超出了 (x, y=0) 的范围。
如何编辑我的代码以使列表超出范围的结果直接等于 (x= 0, y=0)?
这是我的代码:
from scipy import interpolate
res_j = []
for j in range(0, 2, 1):
res_k = []
for k in range(0, 2, 1):
testList = [
[[(0.0, -0.9960135495794032), (0.5, -1.0)], [(0.5, -1.0), (2.0, -0.16138322487766676), (2.5, 1.0849272141417852)]],
[[(4.0, 3.3149805356833015), (4.5, 0.1649293864654484), (5.0, -1.0)], [(5.0, -1.0), (5.5, 0.33841349597101744), (6.0, 4.702347949145297)]],
]
x = [c[0] for c in testList[j][k]]
y = [c[1] for c in testList[j][k]]
# Enter y to find x: f(y) = x
f = interpolate.interp1d(y, x)
interpolate_result = (f(0), f(-1))
res_k.append(interpolate_result)
res_j.append(res_k)
print(res_j)
我试图得到如下结果:
[[(array(0), array(0.5)), (array(2.06474439), array(0.5))], [(array(4.57078944), array(5.)), (array(5.37357663), array(5.))]]
【问题讨论】:
-
testList的结构是否有充分的理由?因为它让事情变得比他们需要的更复杂。 -
@mapf 我不确定是否有原因,这只是我得到的一个数据集。我正在考虑直接将 tuple: (0, 0) 添加到列表中,而列表中没有 (x, y>0)。如果可行,您能否给我一个有关如何执行此操作的提示?