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 相关文章推荐
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
介绍Python的Urllib库的一些高级用法
Apr 30 Python
python线程池(threadpool)模块使用笔记详解
Nov 17 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python 变量的创建过程详解
Sep 02 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 Python
Python 日期与时间转换的方法
Aug 01 Python
Python调用JavaScript代码的方法
Oct 27 Python
手把手教你使用TensorFlow2实现RNN
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脚本的10个技巧(7)
2006/10/09 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
php文件缓存方法总结
2016/03/16 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
2019/03/21 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
python 字典的打印实现
2019/09/26 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
会计专业应届生求职信
2013/11/24 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
综合素质自我评价评语
2015/03/06 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
党员心得体会范文2016
2016/01/23 职场文书
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL