0
2D插值我需要在2D陣列numpy的執行一些Nan
值的內插,例如參見下面的圖片:不同的結果與scipy.interpolate.griddata
以我當前的方法對於插值過程,我使用了scipy.interpolate.griddata
。但是我注意到當 鏡像兩個軸上的陣列,即d2 = d[::-1, ::-1]
, 時,插值給出了不同的結果。 下面是一個完整的例子:
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate as interp
def replace_outliers(f):
mask = np.isnan(f)
lx, ly = f.shape
x, y = np.mgrid[0:lx, 0:ly]
z = interp.griddata(np.array([x[~mask].ravel(),y[~mask].ravel()]).T,
f[~mask].ravel(),
(x,y), method='linear', fill_value=0)
return z
def main():
d = np.load('test.npy')
d2 = d[::-1, ::-1]
dn = replace_outliers(d)
dn2 = replace_outliers(d2)
print np.sum(dn - dn2[::-1, ::-1])
plt.imshow(dn-dn2[::-1, ::-1], interpolation='nearest')
plt.colorbar()
plt.show()
if __name__=='__main__':
main()
這給了兩個插補之間的區別:
或np.sum
作爲評價其約-62.7
那麼怎麼會這樣數組 的簡單鏡像在插值過程中給出了不同的結果? 我使用的座標有可能是錯的嗎?
謝謝您的回覆,這可能確實如此......但是這兩種情況之間的總體差異應該小於上述情況嗎?它與現場的順序相同。 – jrsm
順便說一下,如果有更好的方法來執行這種插值,請讓我知道:) – jrsm
如果數據如上所述,我猜這個字段的順序是垂直插入與水平插入之間可能的差異。 –