学习自: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 - 博客园

Python:2维(平面/数组/矩阵)缺省值插值的更多相关文章

  1. MATLAB 的unique函数——数组矩阵的唯一值

    MATLAB 的unique函数——求数组矩阵的唯一值 相关MathWork文档见此:unique数组中的唯一值 1.C = unique(A) 返回与 A 中相同的数据,但是不包含重复项.C 已按照 ...

  2. python中二维数组的建立,输入和输出

    ''' for循环: for i in range(x,y,dir): pass 首先这个区间是左闭右开 其次dir在省略的情况下默认为1,就是每次加一,也可以指定 python的数组: python ...

  3. python学习1---列表、矩阵、数组

    1.列表与数组区别 numpy数组的所有元素类型是相同的,而列表的元素类型是任意的. 2.numpy数组与矩阵区别 矩阵必须是二维的,数组可以是多维的,matrix是array的一个分支. matri ...

  4. python 二维数组读入

    study from : https://www.cnblogs.com/reaptomorrow-flydream/p/9613847.html python 二维数组键盘输入 1 m = int( ...

  5. python用法笔记(数组(list、touple、dict)、字符串)

    1.产生n个全为1的数组a=[1]*n2.字符数字转化int('12')float('12.5')str(123.45)ASCII码转为相应的字符:chr(97)字符转化为相应的ASCII码:ord( ...

  6. Python运维开发基础02-语法基础【转】

    上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...

  7. python数据分析 Numpy基础 数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

  8. Python运维开发基础10-函数基础【转】

    一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...

  9. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

随机推荐

  1. jsp中获取下拉框的value问题

    遇到问题 最近快期末考试了,今天想写一个简单的增删改查项目练练手,可是在刚写增加的时候就出现了问题,"增"一直是最简单的操作,本来自付很快就能写完,可是数据库中对应的下拉框数据一直 ...

  2. Python打印JSON中中文的解决办法

    code #!/usr/bin/python # encoding=utf-8 import json data = [{"a": "中文"}] print j ...

  3. 如何使用 pytorch 实现 SSD 目标检测算法

    前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...

  4. Python中列表操作函数append的浅拷贝问题

    L=int(input())#L位数N=int(input())#N进制row=[]list1=[]for i in range(1,N): row.append(1)list1.append(row ...

  5. HTML Flex 布局

    感谢原文作者:在路上de 小白 原文链接:https://www.cnblogs.com/likun123/p/9518466.html#commentform 目录 一.Flex 布局是什么? 二. ...

  6. git merge -ff --no-ff --squash 的区别

    感谢原文作者:futureme 原文链接:https://www.cnblogs.com/taylorluo/articles/10810762.html git merge #没有参数(默认为–ff ...

  7. android+json+php+mysql实现用户反馈功能

    相信每个项目都会有用户反馈建议等功能,这个实现的方法很多,下面是我实现的方法,供大家交流.首先看具体界面,三个字段.名字,邮箱为选填,可以为空,建议不能为空.如有需要可以给我留言. 下面贴出布局代码, ...

  8. HDOJ acm steps 3.1.1

    (都是递推求值,呵呵,好开心- - ) 今天又是在自习室通宵(文明玩的停不下来了) 游戏玩完想想该水题了,于是打开了HDOJ的ACM STEPS(这是个好东西,就像他的名字,一步步来的) 2.3.x貌 ...

  9. NoSQL之Redis配置与优化

    NoSQL之Redis配置与优化 目录 NoSQL之Redis配置与优化 一.关系数据库和非关系数据库 1. 关系型数据库 2. 非关系型数据库 3. 非关系型数据库产生背景 4. 关系型数据库和非关 ...

  10. 浅谈Java之反射

    反射 四种获取Class实例的方法 定义测试结构 获取属性结构 获取方法结构 获取构造器结构(包括父类泛型) 获取实现的接口 获取所在包 获取注解 获取并创建指定构造器 获取指定属性 获取并运行指定方 ...