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中asyncore的用法实例
Sep 29 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
使用rst2pdf实现将sphinx生成PDF
Jun 07 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
Python 统计字数的思路详解
May 08 Python
python线程信号量semaphore使用解析
Nov 30 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
Python实现byte转integer
Jun 03 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 Python
Python编程编写完善的命令行工具
Sep 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编写的简单页面跳转功能实现代码
2013/11/27 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
手机端转换rem适应
2017/04/01 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
vue中如何添加百度统计代码
2020/12/19 Vue.js
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
如何利用find命令查找文件
2016/11/18 面试题
奠基仪式主持词
2014/03/20 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
培训简讯范文
2015/07/20 职场文书