如何对拥有稀疏数据的二维numpy数组进行线性插值?

3 投票
1 回答
1084 浏览
提问于 2025-04-17 02:12

我有一个二维的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]

最后一个元素会被复制过来。

非常感谢!

1 个回答

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

撰写回答