numpy中的meshgrid函数的使用


Posted in Python onJuly 31, 2019

numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html

meshgrid(*xi, **kwargs)

功能:从一个坐标向量中返回一个坐标矩阵

参数:

x1,x2...,xn:数组,一维的数组代表网格的坐标。

indexing:{'xy','ij'},笛卡尔坐标'xy'或矩阵'ij'下标作为输出,默认的是笛卡尔坐标。

sparse:bool类型,如果为True,返回一个稀疏矩阵保存在内存中,默认是False。

copy:bool类型,如果是False,返回一个原始数组的视图保存在内存中,默认是True。如果,sparse和copy都为False,将有可能返回一个不连续的数组。而且,如果广播数组的元素超过一个,可以使用一个独立的内存。如果想要对这个数组进行写操作,请先拷贝这个数组。

返回值:x1,x2,....,xn:ndarray(numpy数组)

可能看完官方的文档之后还是一脸懵逼,下面通过几个例子来解释说明一下。 

nx,ny = (3,2)
  #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
  x = np.linspace(0,1,nx)
  #[ 0.  0.5 1. ]
  y = np.linspace(0,1,ny)
  # [0. 1.]
  xv,yv = np.meshgrid(x,y)
  '''
  xv
  [[ 0.  0.5 1. ]
   [ 0.  0.5 1. ]]
   yv
   [[ 0. 0. 0.]
   [ 1. 1. 1.]]
  '''

通过上面的例子,其实可以发现meshgrid函数将两个输入的数组x和y进行扩展,前一个的扩展与后一个有关,后一个的扩展与前一个有关,前一个是竖向扩展,后一个是横向扩展。因为,y的大小为2,所以x竖向扩展为原来的两倍,而x的大小为3,所以y横向扩展为原来的3倍。通过meshgrid函数之后,输入由原来的数组变成了一个矩阵。通过使用meshgrid函数,可以产生一个表格矩阵,下面用一个例子来展示产生一个2*2网格的坐标,每个网格的大小为1。

nx,ny = (3,3)
  #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
  x = np.linspace(0,2,nx)
  # [0. 1. 2.]
  y = np.linspace(0,2,ny)
  # [0. 1. 2.]
  xv,yv = np.meshgrid(x,y)
  print(xv.ravel())
  #[ 0. 1. 2. 0. 1. 2. 0. 1. 2.]
  print(yv.ravel())
  #[ 0. 0. 0. 1. 1. 1. 2. 2. 2.]

ravel函数是将矩阵变为一个一维的数组,其中xv.ravel()就表示x轴的坐标,yv.ravel()就表示了y轴的坐标,我们将x轴的坐标和y轴的坐标进行一一对应,就产生了一个2*2大小为1的网格中的9个点的坐标。

如果,将sparse参数设置为True,就不会向上面一样进行扩展了,也就是说它产生的网格坐标不是所有的网格坐标,而是网格对角线上的坐标点。

nx,ny = (3,3)
  #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
  x = np.linspace(0,2,nx)
  # [0. 1. 2.]
  y = np.linspace(0,2,ny)
  # [0. 1. 2.]
  xv,yv = np.meshgrid(x,y,sparse=True)
  print(xv)
  #[[ 0. 1. 2.]]
  print(yv)
  '''
  [[ 0.]
   [ 1.]
   [ 2.]]
  '''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中反射用法实例
Mar 27 Python
Python实现字典的key和values的交换
Aug 04 Python
python监控进程脚本
Apr 12 Python
python在文本开头插入一行的实例
May 02 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
Python如何使用字符打印照片
Jan 03 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
新手必备Python开发环境搭建教程
May 28 Python
pandas的排序和排名的具体使用
Jul 31 #Python
pandas如何处理缺失值
Jul 31 #Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 #Python
使用pandas读取文件的实现
Jul 31 #Python
python3实现mysql导出excel的方法
Jul 31 #Python
Django接收post前端返回的json格式数据代码实现
Jul 31 #Python
python快速编写单行注释多行注释的方法
Jul 31 #Python
You might like
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
简单介绍Python中的len()函数的使用
2015/04/07 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
pandas按条件筛选数据的实现
2021/02/20 Python
编程实现去掉XML的重复结点
2014/05/28 面试题
施工班组长岗位职责
2014/01/05 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
政治思想表现评语
2014/05/04 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
个人租房协议书
2014/11/28 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书