【问题标题】:How to get interpolated array values in numpy / scipy如何在 numpy / scipy 中获取插值数组值
【发布时间】:2018-01-26 02:02:05
【问题描述】:

我想知道如何获得 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 是浮点值而不是整数。但是我不能对它们进行 css int(...) 因为我的结果需要非常准确。因此我认为插值是最好的解决方案。

【问题讨论】:

    标签: python numpy 3d scipy interpolation


    【解决方案1】:

    只需按照此处所述进行三线性插值: 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
    

    【讨论】:

      【解决方案2】:

      我不确定您的问题到底是什么。

      您想根据一些观察值创建一个插值数组吗?然后我个人建议使用克里金模型,pyKriging 似乎可以做到这一点,但我个人从未使用过。

      然后您可以创建一个函数(使用通过克里金法构建的预测模型),采用 3 个参数 counterX、counterY 和 counterZ,并仅评估任何位置的预测。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多