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线程的两种编程方式
Apr 14 Python
用Python设计一个经典小游戏
May 15 Python
pandas多级分组实现排序的方法
Apr 20 Python
python 中字典嵌套列表的方法
Jul 03 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
python实现暗通道去雾算法的示例
Sep 27 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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对文件进行加锁、解锁实例
2015/01/23 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
python中线程和进程有何区别
2020/06/17 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
购买原创艺术品:Zatista
2019/11/09 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
高中政治教学反思
2014/01/18 职场文书
婚礼主持结束词
2014/03/13 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
销售类求职信
2014/06/13 职场文书
普通党员对照检查材料
2014/09/24 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
五年级学生评语大全
2014/12/26 职场文书
物业接待员岗位职责
2015/04/15 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers