Numpy中Meshgrid函数基本用法及2种应用场景
作者:Lemon 发布时间:2023-05-11 20:13:21
引言
近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法。
但总觉得印象不深刻,不是太了解meshgrid的应用场景。
所以,本文将进一步介绍Numpy中meshgrid的用法。
Meshgrid函数的基本用法
在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度。
可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格。
用法:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的
[X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图
这里,主要以[X,Y]=meshgrid(x,y)为例,来对该函数进行介绍。
[X,Y] = meshgrid(x,y) 将向量x和y定义的区域转换成矩阵X和Y,其中矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制(注:下面代码中X和Y均是数组,在文中统一称为矩阵了)。
假设x是长度为m的向量,y是长度为n的向量,则最终生成的矩阵X和Y的维度都是 n*m (注意不是m*n)。
文字描述可能不是太好理解,下面通过代码演示下:
加载数据
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
m, n = (5, 3)
x = np.linspace(0, 1, m)
y = np.linspace(0, 1, n)
X, Y = np.meshgrid(x,y)
查看向量x和向量y
x
out:
array([ 0. , 0.25, 0.5 , 0.75, 1. ])
y
out:
array([ 0. , 0.5, 1. ])
查看矩阵X和矩阵Y
X
out:
array([[ 0. , 0.25, 0.5 , 0.75, 1. ],
[ 0. , 0.25, 0.5 , 0.75, 1. ],
[ 0. , 0.25, 0.5 , 0.75, 1. ]])
Y
out:
array([[ 0. , 0. , 0. , 0. , 0. ],
[ 0.5, 0.5, 0.5, 0.5, 0.5],
[ 1. , 1. , 1. , 1. , 1. ]])
查看矩阵对应的维度
X.shape
out:
(3, 5)
Y.shape
out:
(3, 5)
meshgrid函数的运行过程,可以通过下面的示意图来加深理解:
再者,也可以通过在matplotlib中进行可视化,来查看函数运行后得到的网格化数据的结果
plt.plot(X, Y, marker='.', color='blue', linestyle='none')
plt.show()
当然,我们也可以获得网格平面上坐标点的数据,如下:
z = [i for i in zip(X.flat,Y.flat)]
z
out:
[(0.0, 0.0),
(0.25, 0.0),
(0.5, 0.0),
(0.75, 0.0),
(1.0, 0.0),
(0.0, 0.5),
(0.25, 0.5),
(0.5, 0.5),
(0.75, 0.5),
(1.0, 0.5),
(0.0, 1.0),
(0.25, 1.0),
(0.5, 1.0),
(0.75, 1.0),
(1.0, 1.0)]
Meshgrid函数的一些应用场景
Meshgrid函数常用的场景有等高线绘制及机器学习中SVC超平面的绘制(二维场景下)。
分别图示如下:
(1)等高线
(2)SVC中超平面的绘制:
关于场景(1)和场景(2),将在后续的文章里做进一步描述。
当然,可能还有些其他场景,这里就不做进一步介绍了。
来源:https://mp.weixin.qq.com/s/FI7R7zHjchRyDcV6ezQFxg


猜你喜欢
- 如下是简单cookie操作,当前仅限前端实例,具体内容如下要注意的有两点:1、cookie内容存贮的名称2、删除cookie是通过设置过期为
- 一、前言前几天在Python钻石交流群分享了一个Python基础的问题,这里拿出来给大家分享下,一起学习下。编写程序,输入若干整数(整数之间
- 引子上下文管理器是一种简化代码的有力方式,其内部也蕴含了很多Python的编程思想,今天我们就来探究一下Python的上下文管理器。大家之前
- Silverlight和Flash,到底谁更强?谁更有优势?很多初接触Silverlight和Flash的人总是会问这个问题,因为它们在表面
- 有些时候我们发现一些模块没有提供pip install 命令和安装教程 , 只提供了一个setup.py文件 , 这个时候如何安装呢?步骤打
- 可视化包Pygal生成可缩放矢量图形文件可以在尺寸不同的屏幕上自动缩放,显示图表#安装pygalpip install pygal'
- UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是
- 一、前言索引设计不佳和缺少索引是提高数据库和应用程序性能的主要障碍。 设计高效的索引对于获得良好的数据库和应用程序性能极为重要。 本索引设计
- 1. 生命周期(重要)1.1 初步认识生命周期别名:生命周期回调函数、生命周期函数、生命周期钩子。生命周期是什么?Vue在关键时刻帮我们调用
- 一、前言不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一
- python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。下面是一个利用smtplib,实现QQ邮箱
- golang用来序列化的模块有很多,我们来介绍3个。json首先登场的是json,这个几乎毋庸置疑。序列化package mainimpor
- 点击获取后,返回2s后的鼠标位置,显示在文本框(需要用pip命令安装所需的的库)(pip install 模块名比如 安装pyautogui
- 之前我们已经安装了lnmp的环境,现在让我们来安装phpmyadmin。跟前一样,yum默认的库里是没有phpmyadmin的,我们需要从e
- itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友、添加好友、拉好友群聊、微信机器人等等。详细用
- 现在是好时机来指出Django和URL配置背后的哲学: 松耦合 原则。 简单的说,松耦合是一个 重要的保证互换性的软件开发方法。Django
- 很多SQL Server程序员对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们
- 1. 迭代根据记录的前面的元素的位置信息 去访问后续的元素的过程 -遍历 迭代2. 可迭代对象 iterable如何判断可迭代对象的3种方式
- 一、分屏展示当你想同时看到多个文件的时候:右击标签页;选择 move right 或者 split vertical;效果:二、远程 Pyt
- 方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib方法2: 多文件模块,文件内有setup.py文件在官网或者GitHub