Skip to main content
 首页 » 编程设计

python之如何对具有稀疏数据的 2D numpy 数组进行线性插值

2025年05月04日7daizhj

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

我们遍历二维数组的每一列

例如,考虑将以下列作为第一列

   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])