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基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
python 字符串追加实例
Jul 20 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Django自定义列表 models字段显示方式
Apr 03 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
Python工程师必考的6个经典面试题
Jun 28 Python
详解MindSpore自定义模型损失函数
Jun 30 Python
python如何将mat文件转为png
Jul 15 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文档更新介绍
2011/07/22 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
Python实现的堆排序算法示例
2018/04/29 Python
python跳出双层for循环的解决方法
2019/06/24 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
python的列表List求均值和中位数实例
2020/03/03 Python
导致python中import错误的原因是什么
2020/07/01 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
中海讯通笔试题
2015/09/15 面试题
洗发露广告词
2014/03/14 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
结婚幸福感言
2015/08/01 职场文书
python基础之停用词过滤详解
2021/04/21 Python
JavaScript控制台的更多功能
2021/04/28 Javascript