我想知道如何获得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(...)。因此我认为插值是最好的解决方案。
答案 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