我下载的卫星数据包含了某些物种的空间分布信息。在
卫星过街时被云层覆盖的一些地方被视为NaN值。在
但是当我想将卫星数据(二维数组)插值成另一个形状(例如,分辨率变粗)。NaN值让我很困扰。在
由于NaN值的存在scipy.插值函数不能返回有限值。在
这是我的代码,我上传的数据文件here:
lon,lat = np.linespace(75.12,135.12,241), np.linespace(18.12, 55.12, 149)
data = pd.read_csv("./CH2O-NO2/test.csv").values.reshape(lat.shape[0],lon.shape[1])
我可以用Basemap包绘制data
的二维分布。在
代码运行速度很慢,并且数据粗糙度有很多NaN值。在
处理丢失的数据是我日常工作中的一个棘手问题。对于二维数组类型的数据集,有没有什么方法可以用它的一些邻域网格来代替NaN值?在
仍无法发表评论。在
正如offeltoffel所提到的,任何填充都会给数据带来偏差。 您可能对图像修复技术感兴趣,以防NaN区域不是很大。我在
OpenCV
中找到了一些实现,但是在理论上还有很多不同的想法:http://docs.opencv.org/trunk/df/d3d/tutorial_py_inpainting.html我找到了一些wolframmathematica函数来修复:https://reference.wolfram.com/language/ref/Inpaint.html。 你也可以在谷歌上搜索“图像修复”。这项查询将产生许多关于这一问题的科学文章。如果你有信心的话,你可以试几次。在
另一种可能会带来一些成功的方法:将所有的NaN替换为零(或mean,或其他东西),重新缩放它,然后替换零(…)又是南了。在
希望这能有所帮助
相关问题 更多 >
编程相关推荐