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开发的小球完全弹性碰撞游戏代码
Oct 15 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python中线程编程之threading模块的使用详解
Jun 23 Python
django manage.py扩展自定义命令方法
May 27 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
python实现微信打飞机游戏
Mar 24 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
基于Python实现将列表数据生成折线图
Mar 23 Python
Python&Matlab实现樱花的绘制
Apr 07 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
实用函数3
2007/11/08 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
python生成特定分布数的实例
2019/12/05 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
优秀毕业生求职推荐信范文
2013/11/21 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android