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中functools模块的常用函数解析
Jun 30 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
《Python学习手册》学习总结
Jan 17 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
Python zip函数打包元素实例解析
Dec 11 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
Django之腾讯云短信的实现
Jun 12 Python
python如何输出反斜杠
Jun 18 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
python爬虫请求头的使用
Dec 01 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 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
PHP新手上路(四)
2006/10/09 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
php实现word转html的方法
2016/01/22 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
解析Python中的二进制位运算符
2015/05/13 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
django正续或者倒序查库实例
2020/05/19 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
商铺消防安全责任书
2014/07/29 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android