python-2D数组中的NaN插值.人口稀少
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-2D数组中的NaN插值.人口稀少,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2383字,纯文字阅读大概需要4分钟。
内容图文
![python-2D数组中的NaN插值.人口稀少](/upload/InfoBanner/zyjiaocheng/659/eb59fe4fef54455aa1c82c1aa04a7970.jpg)
我有一些NaN值的二维数组.我想使用我拥有数据的位置来修补(插值)这些值.该数组如下所示.
如果可能的话,我想进行插值,以便当我远离非NaN值时,我会越来越接近值0.
我怎样才能做到这一点?
我读到大约gridddata,但它似乎旨在用于非结构化N维数据.我也阅读了other threads中的答案,但我认为它们的出发点有所不同.
array([[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan],
[ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan],
[ 1. , 0. , 1. , 0. , 0.25 ,
nan, 0. , nan, nan, nan],
[ nan, 0. , nan, 0.25 , 0.66666667,
0.25 , 0.66666667, 0. , 1. , nan],
[ 0. , 0.5 , 0.66666667, 0.8 , 0.66666667,
0.8 , 0.5 , 0.83333333, nan, nan],
[ 0.625 , 0.5625 , 0.9 , 0.8 , 0.8 ,
0.83333333, 0.57142857, 0.66666667, 0.5 , nan],
[ nan, 1. , 0.71428571, 0.85714286, 1. ,
1. , 1. , nan, nan, nan],
[ nan, nan, nan, nan, 1. ,
1. , nan, nan, nan, nan]])
解决方法:
基于您想使用哪种插值技术,有数十种可能的方法.实际上,由于您的数据被NaN包围,因此我宁愿将其视为先平滑后插值的函数.如果您想更接近零,那么就二维地图上的欧几里德距离而言,您与非NaN的距离就越远,我建议您执行以下操作:
>将每个非NaN数据点X [i,j]视为以[i,j]为中心的高斯,方差= 1,按比例缩放,因此其pdf([i,j])= X [i,j],因此f_ij ([a,b])= X [i,j] * exp(-|| [a,b]-[i,j] || ^ 2/2).
>对于每个NaN数据点X [a,b]设置X [a,b] = sum(f_ij([a,b])),对非NaN数据点的所有[i,j]索引进行求和
结果,您会得到类似“密度估计”的信息,并且通过更改方差(我建议使用= 1),您可以修改“消失速度”值.
因此,代码仅是所有NaN的一个循环,对于每个NaN,您都将遍历所有非NaN并求和高斯值.
它会像这样:
nans = np.array( np.where( np.isnan(X) ) ).T
notnans = np.array( np.where( ~np.isnan(X) ) ).T
for p in nans:
X[p[0],p[1]] = sum( X[q[0],q[1]]*np.exp(-(sum((p-q)**2))/2) for q in notnans )
内容总结
以上是互联网集市为您收集整理的python-2D数组中的NaN插值.人口稀少全部内容,希望文章能够帮你解决python-2D数组中的NaN插值.人口稀少所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。