Python:2维(平面/数组/矩阵)缺省值插值 您所在的位置:网站首页 python把nan值去掉 Python:2维(平面/数组/矩阵)缺省值插值

Python:2维(平面/数组/矩阵)缺省值插值

2022-12-30 05:19| 来源: 网络整理| 查看: 265

学习自:python插值填补缺省值_插值缺失值2d python_weixin_39592315的博客-CSDN博客

问题

假设我们有一个2D数组(或者矩阵),其中有一些缺省值NaN,就像下边这样:

1 2 3 NaN 5 2 3 4 NaN 6 3 4 NaN NaN 7 4 5 NaN NaN 5 5 6 7 8 9

我们怎么将这些NaN填充为一些合理的值呢?

解决方案

我们可以用scipy.interpolate.griddata进行插值,这里先把完整代码放上来:

#二维缺省值插值 import numpy as np from scipy import interpolate array = np.random.random_integers(0,10,(10,10)).astype(float) #① array[array>7] = np.nan array = np.ma.masked_invalid(array)#② x = np.arange(0, array.shape[1])#③ y = np.arange(0, array.shape[0]) xx,yy=np.meshgrid(x,y) #④ x1 = xx[~array.mask]#⑤ y1 = yy[~array.mask] newarr = array[~array.mask].data GD1 = interpolate.griddata((x1, y1), newarr.ravel(),(xx, yy),method='cubic')#⑥ 解释 ①生成初始二维数组,在其中生成空值; array = np.random.randint(0,10,(10,10)).astype(float) array[array>7]=np.nan #生成形状为(10,10),值为[0,10)的随机int值的array #将array中大于7的值设置为空 #结果array([[ 3., 0., 6., nan, nan, nan, 6., 3., 7., 6.], [ 1., 4., 4., 6., nan, 4., 1., nan, 3., 5.], [nan, 3., 0., nan, 4., 7., 7., 3., 3., 5.], [ 0., 7., 0., 2., 6., 6., 1., 4., 7., nan], [ 0., nan, nan, nan, 4., nan, 6., 0., 2., nan], [ 2., 5., 2., nan, 6., nan, 1., 2., 4., 4.], [ 4., 4., 0., 6., 5., 5., 3., 7., 7., 2.], [ 1., 6., 0., 7., 5., 4., 3., 1., 7., 0.], [ 2., 4., 4., nan, nan, 6., 3., 1., 5., 2.], [ 3., 4., 0., 3., 3., 2., 4., 4., 2., nan]]) ②生成array的Masked Array;

关于Masked Array这一点可以看Python:numpy.ma模块 - ShineLe - 博客园

array=np.ma.masked_invalid(array) ③得到array的横纵坐标序列x,y; x=np.arange(0,array.shape[1]) y=np.arange(0,array.shape[1]) ④由横纵坐标序列构造2维网格; XX,YY=np.meshgrid(x,y) ⑤提取原array中有效值的横纵坐标及值; x1=XX[~array.mask] y1=YY[~array.mask] newarr=array[~array.mask].data #提取Masked array中的data

这里的x1、y1、newarr都是一维的,每个元素都是一一对应的,即x1[i]、y1[i]、newarr[i]对应了第i+1个有效值的横纵坐标及值。

⑥插值,二维插值 GD1 = interpolate.griddata((x1, y1), newarr.ravel(),(xx, yy),method='cubic')

关于inerpolate.griddata,可以看Python:Scipy.interpolate.griddata - ShineLe - 博客园



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有