我有一个二维数组(或者矩阵,如果您愿意的话)缺少一些值,表示为
NaN
。丢失的值通常位于沿一个轴的条形图中,例如:
1 2 3 NaN 5
2 3 4 Nan 6
3 4 Nan Nan 7
4 5 Nan Nan 8
5 6 7 8 9
我想用一些合理的数字来代替NaN
。
我调查了delaunay三角测量,但发现很少的文件。
我尝试使用^{
这个问题应该是this post的自然二维扩展。有没有办法在二维数组中的NaN
/缺失值上进行插值?
实际上,我会一行一行地手动遍历这个矩阵,每当您开始遇到一个nan列表时,请紧跟在nan之前和之后,以及在返回到普通数字之前看到的nan的数量。一旦找到这些数字,就可以自己用插值覆盖nan。
是的,您可以使用^{} 和屏蔽数组,并且可以选择您喜欢的插值类型,使用参数
method
通常'cubic'
可以很好地完成以下工作:使用
plt.imshow(array,interpolation='nearest')
时看起来像这样 以下内容:这是最终结果:
看,如果nan值在边上,并且被nan值包围,那么它们就不能被插值并保持
nan
。您可以使用fill_value
参数更改它。如果有一个3x3区域的NaN值,你会得到中间点的合理数据吗?
这取决于你的数据类型,你必须进行一些测试。例如,你可以故意屏蔽一些好的数据,尝试不同类型的插值,例如立方、线性等,使用带有屏蔽值的数组,计算插值值和你之前屏蔽的原始值之间的差异,看看哪种方法返回你的小差异。
你可以用这样的东西:
这样的话:
当然这是针对随机数的,所以结果可能会有很大变化是正常的。所以最好的做法是测试数据集中的“故意屏蔽”部分,看看会发生什么。
相关问题 更多 >
编程相关推荐