Python 如何在具有稀疏数据的2D numpy阵列上进行线性插值?

Python 如何在具有稀疏数据的2D numpy阵列上进行线性插值?,python,numpy,Python,Numpy,我有一个2D numpy数组。。。图像中有一些值,其余值是稀疏的。对于线性插值,我想取数组的第一列。查看值出现的位置,并对零值进行线性插值,但仅对一个间隔进行线性插值 我们在2D数组的每一列上循环 作为一个例子,考虑下面的第一列 a = [0,0,0,0,1,0,0,0,2,0,0,10,0,0,3,4,6,0,0,1,0,0] 前四个0,0,0,0将是第一个非零元素的相同副本,在本例中为1 第二个线性插值间隔为 [1,0,0,0,2] 第三个和其余的将是 [2,0,0,1

我有一个2D numpy数组。。。图像中有一些值,其余值是稀疏的。对于线性插值,我想取数组的第一列。查看值出现的位置,并对零值进行线性插值,但仅对一个间隔进行线性插值

我们在2D数组的每一列上循环

作为一个例子,考虑下面的第一列

   a = [0,0,0,0,1,0,0,0,2,0,0,10,0,0,3,4,6,0,0,1,0,0]
前四个
0,0,0,0
将是第一个非零元素的相同副本,在本例中为1

第二个线性插值间隔为

   [1,0,0,0,2]
第三个和其余的将是

   [2,0,0,10]
   [10,0,0,3]
   [6,0,0,1]
最后,将复制最后一个元素


非常感谢

尝试以下方法:

import numpy as np

a = np.array([0,0,0,0,1,0,0,0,2,0,0,10,0,0,3,4,6,0,0,1,0,0])
x, = np.nonzero(a)
a_filled = np.interp(np.arange(a.size), x, a[x])
这将产生:

array([1, 1, 1, 1, 1, 1.25, 1.5, 1.75, 2, 4.67, 7.33, 10, 7.67, 5.33, 3, 4, 6, 4.33, 2.67, 1, 1, 1])

你的问题到底是什么?如何获得间歇时间?