我使用scipy interpolate griddata将数据插入格网时遇到问题。我的数据是二维的,格式为:X阵列,Y阵列和Z中的一些强度。由于这些数据的间隔不均匀,我想将它们重新插值到一个网格中,以便保存图像以供以后使用。
如果我有一个Z数据块,它就能完美地工作。当我有不连续的Z数据时,我的问题就出现了(就像被没有数据的区域分隔开的数据“岛”)。在这种情况下,插值也会发生在我的数据块之间差距中。
对问题的一些说明:
是否有任何方法可以正确地插入我的数据?
(非常简单)代码的某一部分:
import numpy as np
from scipy import interpolate
X=data['X']
Y=data['Y']
Z=data['Z']
Xa,Ya=np.linspace(min_x, max_x, dim_x),np.linspace(min_y, max_y, dim_y) #dimensions of my grid, depends on the dataset I have
XX,YY=np.meshgrid(Xa,Ya) #creation of the grid
Zb = interpolate.griddata((X,Y), Z, (XX,YY), method='linear')
我试过“最近的”或“立方的”,但我也不起作用...
编辑:我添加了一个文本文件,其中包含一些示例X,Y和Z,我试图插入,沿着新的“Zb”插入数据,以显示问题。相同的数据绘制在上面的图像中。数据可在这里获得:Gdrive
2条答案
按热度按时间9rbhqvlz1#
我也遇到过类似的问题。我通过计算不同的网格(在你的问题中,应该是每个磁盘一个网格)和等值线图来解决这个问题,但使用相同的整个范围的值,并将它们绘制在一起。可能不“优雅”,但这是可以的。阿兰
w41d8nur2#
我找到的解决方案是放弃对我的数据进行插值的想法。相反,当阅读我的数据时,我定义了一个ROI(min_x,max_x,resolution_x和y相同),我通过对我的数据进行迭代来填充ROI,并使用各种选项(min,max,average...)。这可能不是最快的解决方案,但它很有效,不会产生伪影!
感谢大家的宝贵意见!
铝合金