Python:2维(平面/数组/矩阵)缺省值插值
学习自: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维(平面/数组/矩阵)缺省值插值的更多相关文章
- MATLAB 的unique函数——数组矩阵的唯一值
MATLAB 的unique函数——求数组矩阵的唯一值 相关MathWork文档见此:unique数组中的唯一值 1.C = unique(A) 返回与 A 中相同的数据,但是不包含重复项.C 已按照 ...
- python中二维数组的建立,输入和输出
''' for循环: for i in range(x,y,dir): pass 首先这个区间是左闭右开 其次dir在省略的情况下默认为1,就是每次加一,也可以指定 python的数组: python ...
- python学习1---列表、矩阵、数组
1.列表与数组区别 numpy数组的所有元素类型是相同的,而列表的元素类型是任意的. 2.numpy数组与矩阵区别 矩阵必须是二维的,数组可以是多维的,matrix是array的一个分支. matri ...
- python 二维数组读入
study from : https://www.cnblogs.com/reaptomorrow-flydream/p/9613847.html python 二维数组键盘输入 1 m = int( ...
- python用法笔记(数组(list、touple、dict)、字符串)
1.产生n个全为1的数组a=[1]*n2.字符数字转化int('12')float('12.5')str(123.45)ASCII码转为相应的字符:chr(97)字符转化为相应的ASCII码:ord( ...
- Python运维开发基础02-语法基础【转】
上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...
- python数据分析 Numpy基础 数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- Python运维开发基础10-函数基础【转】
一,函数的非固定参数 1.1 默认参数 在定义形参的时候,提前给形参赋一个固定的值. #代码演示: def test(x,y=2): #形参里有一个默认参数 print (x) print (y) t ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
随机推荐
- jsp中获取下拉框的value问题
遇到问题 最近快期末考试了,今天想写一个简单的增删改查项目练练手,可是在刚写增加的时候就出现了问题,"增"一直是最简单的操作,本来自付很快就能写完,可是数据库中对应的下拉框数据一直 ...
- Python打印JSON中中文的解决办法
code #!/usr/bin/python # encoding=utf-8 import json data = [{"a": "中文"}] print j ...
- 如何使用 pytorch 实现 SSD 目标检测算法
前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...
- Python中列表操作函数append的浅拷贝问题
L=int(input())#L位数N=int(input())#N进制row=[]list1=[]for i in range(1,N): row.append(1)list1.append(row ...
- HTML Flex 布局
感谢原文作者:在路上de 小白 原文链接:https://www.cnblogs.com/likun123/p/9518466.html#commentform 目录 一.Flex 布局是什么? 二. ...
- git merge -ff --no-ff --squash 的区别
感谢原文作者:futureme 原文链接:https://www.cnblogs.com/taylorluo/articles/10810762.html git merge #没有参数(默认为–ff ...
- android+json+php+mysql实现用户反馈功能
相信每个项目都会有用户反馈建议等功能,这个实现的方法很多,下面是我实现的方法,供大家交流.首先看具体界面,三个字段.名字,邮箱为选填,可以为空,建议不能为空.如有需要可以给我留言. 下面贴出布局代码, ...
- HDOJ acm steps 3.1.1
(都是递推求值,呵呵,好开心- - ) 今天又是在自习室通宵(文明玩的停不下来了) 游戏玩完想想该水题了,于是打开了HDOJ的ACM STEPS(这是个好东西,就像他的名字,一步步来的) 2.3.x貌 ...
- NoSQL之Redis配置与优化
NoSQL之Redis配置与优化 目录 NoSQL之Redis配置与优化 一.关系数据库和非关系数据库 1. 关系型数据库 2. 非关系型数据库 3. 非关系型数据库产生背景 4. 关系型数据库和非关 ...
- 浅谈Java之反射
反射 四种获取Class实例的方法 定义测试结构 获取属性结构 获取方法结构 获取构造器结构(包括父类泛型) 获取实现的接口 获取所在包 获取注解 获取并创建指定构造器 获取指定属性 获取并运行指定方 ...