如何对拥有稀疏数据的二维numpy数组进行线性插值?
我有一个二维的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])