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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
python实现按任意键继续执行程序
Dec 30 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Python编程中类与类的关系详解
Aug 08 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 Python
Python scrapy爬取起点中文网小说榜单
Jun 13 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
js闭包用法实例详解
2016/12/13 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
基于vue.js的分页插件详解
2017/11/27 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
详解Python with/as使用说明
2018/12/13 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
python基于opencv实现人脸识别
2021/01/04 Python
Strathberry苏贝瑞中国官网:西班牙高级工匠手工打造
2020/10/19 全球购物
华为慧通笔试题
2016/04/22 面试题
公司离职证明范本
2014/01/13 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript