使用掩膜数组的ndimage map_coordinates
我正在使用ndimage进行插值,代码如下:
ndimage.map_coordinates(input_data, coords, output, 2, prefilter=False)
现在,问题是我在整个输入数据中没有有效的测量值。所以,我有一个被遮罩的数组,它告诉我哪些数据点是有效的。因此,在进行插值时,我希望只使用有效的像素,并相应地调整权重(确保权重的总和为1)。
但是,我发现没有简单的方法来做到这一点。我想知道是否有人知道好的方法,或者能指引我一些可以使用的库或代码。我之前是用C++的,所以现在在学习Python的过程中还有点摸索。
2 个回答
0
你可以使用 scipy.interpolate.griddata
这个工具,从一些已知的数据点中获取插值结果。下面这个例子
import numpy as np
from scipy.interpolate import griddata
# data array
a = np.arange(9).reshape((3,3)).astype(float)
a[1, 1] = np.nan
print(a)
a = a.flatten()
# coordinate arrays
ii, jj = np.indices((3,3))
ij = np.stack((ii.flatten(), jj.flatten()), axis=1)
# filter out unknowns
mask = ~np.isnan(a)
a = a[mask]
ij = ij[mask]
# interpolate for the missing a[1, 1] element
res = griddata(ij, a, (1, 1), method='cubic')
print(res)
会生成
[[ 0. 1. 2.]
[ 3. nan 5.]
[ 6. 7. 8.]]
4.000000157826586