如何在numpy / scipy中获取插值数组值

时间:2017-08-17 15:06:55

标签: python numpy 3d scipy interpolation

我想知道如何获得3D数组的插值。我试图获得一个3d数组的位置:(1.4,2.3,4.2)的值。如何获得插值?

counterX = 1.5 
counterY = 1.5 
counterZ = 1.5 

for x in range(0, length)
    for y in range(0, length)
        for z in range(0, length)
            value = img[counterX, counterY, counterZ]
        counterZ = 0
    counterY = 0

counterX,counterY和counterZ是浮点值而不是整数。但是由于我的结果需要非常精确,所以我无法将它们归为int(...)。因此我认为插值是最好的解决方案。

2 个答案:

答案 0 :(得分:0)

我不确定你的问题究竟是什么。

您是否要根据某些观察值创建插值数组?然后我会建议使用kriging模型,pyKriging似乎这样做,但我从未使用过它。

然后你可以创建一个函数(使用通过克里金建立的预测模型),使用3个参数counterX,counterY和counterZ,并且只评估任何位置的预测。

答案 1 :(得分:0)

按照此处所述进行三线插值: https://en.wikipedia.org/wiki/Trilinear_interpolation

对于你的例子,这将是:

C00 = (1,2,4)*0.6 + (2,2,4)*0.4
C01 = (1,3,4)*0.6 + (2,3,4)*0.4
C10 = (1,2,5)*0.6 + (2,2,5)*0.4
C11 = (1,3,5)*0.6 + (2,3,5)*0.4

C0 = C00*0.8 + C10*0.2
C1 = C01*0.8 + C11*0.2

C = C0*0.7 + C1*0.3