我有一个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
将是第一个non_zero元素的相同副本,这是1。
第二个线性插值间隔为
[1,0,0,0,2]
第三个和其余的将是
[2,0,0,10]
[10,0,0,3]
[6,0,0,1]
最后将复制最后一个元素。
非常感谢
答案 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])