学习自: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. NOIP PJ/CSP-J 题目选做

    1. luoguP7074 [CSP-J2020] 方格取数 2. luoguP5662 [CSP-J2019] 纪念品 3. luoguP2671 [NOIP2015 普及组] 求和 4. luog ...

  2. Mac iterm2 配色以及终端大小写敏感解决方案

    iterm2是mac下非常好用的一款终端.但默认的配色实在不好用,经过一翻搜索终于找到了比较满意的,以下贴出博主的解决方案 配色 首先修改 ~/.bash_profile 加入一下代码 #enable ...

  3. Java多线程专题1: 并发与并行的基础概念

    合集目录 Java多线程专题1: 并发与并行的基础概念 什么是多线程并发和并行? 并发: Concurrency 特指单核可以处理多任务, 这种机制主要实现于操作系统层面, 用于充分利用单CPU的性能 ...

  4. ApacheCN 网络安全译文集 20211025 更新

    Android 渗透测试学习手册 中文版 第一章 Android 安全入门 第二章 准备实验环境 第三章 Android 应用的逆向和审计 第四章 对 Android 设备进行流量分析 第五章 And ...

  5. Win10正式版屏幕一直闪烁怎么办

    这个原因是由于两个账户都在线,一个账户更替到另一个账户时出现的 解决办法:先注销一个账户,再登录到另一个账户,即只保持一个账户在线,就不会出现屏幕闪烁的情况.

  6. PHP 取整

    转载请注明来源:https://www.cnblogs.com/hookjc/ 对于功能强大的PHP语言来说,能掌握到它的函数用法,一般都能灵活的编写各种需求的PHP程序.我们经常用到的PHP取整函数 ...

  7. npm 查看一个包的版本信息

    有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的, 所以我们要关注包的版本信息: 现在,假设我们需要 jquery ,但是jquery现在有很多版本,我们如何通过npm查看呢? ...

  8. 各种字体.效果和名字对应图. --- by 王朋

    原帖地址:http://www.oschina.net/question/565065_76244

  9. yum本地源仓库安装报错 被锁定如何解决?

    yum安装报错被锁定如何解决 上图!!!!!如图的报错 解决方法: 是不是很简单 智商在地上摩擦~~~

  10. Zabbix企业级开源监控解决方案

    Zabbix企业级开源监控解决方案 目录 Zabbix企业级开源监控解决方案 一.Zabbix 1. 监控系统的必要性 2. 监控软件的作用 3. Zabbix的定义 4. Zabbix的监控原理 5 ...