numpy.meshgrid()理解(小结)


Posted in Python onAugust 01, 2019

本文的目的是记录meshgrid()的理解过程:

step1. 通过一个示例引入创建网格点矩阵;

step2. 基于步骤1,说明meshgrid()的作用;

step3. 详细解读meshgrid()的官网定义;

说明:step1和2 的数据都是基于笛卡尔坐标系的矩阵,目的是为了方便讨论。

step1. 通过一个示例引入创建网格点矩阵;

示例1,创建一个2行3列的网格点矩阵。

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: meshgrid1.py
#Brief:
#Author: frank
#Mail: frank0903@aliyun.com
#Created Time:2018-06-14 21:33:14
############################
import numpy as np
import matplotlib.pyplot as plt

X = np.array([[0, 0.5, 1],[0, 0.5, 1]])
print("X的维度:{},shape:{}".format(X.ndim, X.shape))
Y = np.array([[0, 0, 0],[1, 1, 1]])
print("Y的维度:{},shape:{}".format(Y.ndim, Y.shape))

plt.plot(X, Y, 'o--')
plt.grid(True)
plt.show()

numpy.meshgrid()理解(小结)

X矩阵是:[[0. 0.5 1. ],[0. 0.5 1. ]]

Y矩阵是:[[0 0 0],[1 1 1]]

step2. meshgrid()的作用;

当要描绘的 矩阵网格点的数据量小的时候,可以用上述方法构造网格点坐标数据;

但是如果是一个(256, 100)的整数矩阵网格,要怎样构造数据呢?

方法1:将x轴上的100个整数点组成的行向量,重复256次,构成shape(256,100)的X矩阵;将y轴上的256个整数点组成列向量,重复100次构成shape(256,100)的Y矩阵

显然方法1的数据构造过程很繁琐,也不方便调用,那么有没有更好的办法呢?of course!!!

那么meshgrid()就显示出它的作用了

使用meshgrid方法,你只需要构造一个表示x轴上的坐标的向量和一个表示y轴上的坐标的向量;然后作为参数给到meshgrid(),该函数就会返回相应维度的两个矩阵;

例如,你想构造一个2行3列的矩阵网格点,那么x生成一个shape(3,)的向量,y生成一个shape(2,)的向量,将x,y传入meshgrid(),最后返回的X,Y矩阵的shape(2,3)

示例2,使用meshgrid()生成step1中的网格点矩阵

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

numpy.meshgrid()理解(小结)

示例3,生成一个20行30列的网格点矩阵

x = np.linspace(0,500,30)
print("x的维度:{},shape:{}".format(x.ndim, x.shape))
print(x)
y = np.linspace(0,500,20)
print("y的维度:{},shape:{}".format(y.ndim, y.shape))
print(y)

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))

plt.plot(xv, yv, '.')
plt.grid(True)
plt.show()

numpy.meshgrid()理解(小结)

step3. 详细解读meshgrid()的官网定义;

numpy.meshgrid(*xi, **kwargs)

Return coordinate matrices from coordinate vectors.

根据输入的坐标向量生成对应的坐标矩阵

Parameters:

x1, x2,…, xn : array_like

1-D arrays representing the coordinates of a grid.

indexing : {‘xy', ‘ij'}, optional

Cartesian (‘xy', default) or matrix (‘ij') indexing of output. See Notes for more details.

sparse : bool, optional

If True a sparse grid is returned in order to conserve memory. Default is False.

copy : bool, optional

If False, a view into the original arrays are returned in order to conserve memory.

Default is True. Please note that sparse=False, copy=False will likely return non-contiguous arrays.

Furthermore, more than one element of a broadcast array may refer to a single memory location.

If you need to write to the arrays, make copies first.
Returns:

X1, X2,…, XN : ndarray

For vectors x1, x2,…, ‘xn' with lengths Ni=len(xi) ,

return (N1, N2, N3,...Nn) shaped arrays if indexing='ij'

or (N2, N1, N3,...Nn) shaped arrays if indexing='xy'

with the elements of xi repeated to fill the matrix along the first dimension for x1, the second for x2 and so on.

针对indexing参数的说明:

indexing只是影响meshgrid()函数返回的矩阵的表示形式,但并不影响坐标点

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))
print(xv)
print(yv)

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

numpy.meshgrid()理解(小结)

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y,indexing='ij')
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))
print(xv)
print(yv)

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

numpy.meshgrid()理解(小结)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用MD5加密字符串示例
Aug 22 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
Python中数字以及算数运算符的相关使用
Oct 12 Python
python使用生成器实现可迭代对象
Mar 20 Python
Python 实现选择排序的算法步骤
Apr 22 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
Python统计时间内的并发数代码实例
Dec 28 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
python中使用asyncio实现异步IO实例分析
Feb 26 Python
python学习之panda数据分析核心支持库
May 07 Python
Python-接口开发入门解析
Aug 01 #Python
Python列表(list)所有元素的同一操作解析
Aug 01 #Python
详解numpy.meshgrid()方法使用
Aug 01 #Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 #Python
numpy中的meshgrid函数的使用
Jul 31 #Python
pandas的排序和排名的具体使用
Jul 31 #Python
pandas如何处理缺失值
Jul 31 #Python
You might like
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
Python列表append和+的区别浅析
2015/02/02 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
django实现用户登陆功能详解
2017/12/11 Python
python读取中文txt文本的方法
2018/04/12 Python
详解Python中的正则表达式
2018/07/08 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python 简单的调用有道翻译
2020/11/25 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
企业内控岗位的职责
2014/02/07 职场文书
社区健康教育实施方案
2014/03/18 职场文书
2014年财政工作总结
2014/12/10 职场文书
千手观音观后感
2015/06/03 职场文书