Numpy中np.mashgri() 函数介绍及2种应用场景
@[toc](Numpy中np.mashgri() 函数介绍及2种应用场景
文章目录:)
近期在好几个地方都看到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的维度都是 nm (注意不是mn)
。
文字描述可能不是太好理解,下面通过代码演示下:
加载数据
import numpy as np
import matplotlib.pyplot as plt%matplotlib inlinem, n = (5, 3)
x = np.linspace(0, 1, m) # 变成矩阵的行
print(x.shape, x) # (5,) [0. 0.25 0.5 0.75 1. ]
y = np.linspace(0, 1, n)
print(y.shape, y) # (3,) [0. 0.5 1. ]
X, Y = np.meshgrid(x,y)
查看向量x和向量y
xout:
array([ 0. , 0.25, 0.5 , 0.75, 1. ])yout:
array([ 0. , 0.5, 1. ])
查看矩阵X和矩阵Y
Xout:
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. ]])Yout:
array([[ 0. , 0. , 0. , 0. , 0. ],[ 0.5, 0.5, 0.5, 0.5, 0.5],[ 1. , 1. , 1. , 1. , 1. ]])
查看矩阵对应的维度
X.shapeout:
(3, 5)Y.shapeout:
(3, 5)
meshgrid函数的运行过程,可以通过下面的示意图来加深理解:
再者,也可以通过在matplotlib中进行可视化,来查看函数运行后得到的网格化数据的结果
plt.plot(X, Y, marker='.', color='blue', linestyle='none')
plt.savefig("grid.jpg")
plt.show()
当然,我们也可以获得网格平面上坐标点的数据,如下:
(就是取上面的X和Y两个矩阵对应位置的数值,构成坐标点
)
z = [i for i in zip(X.flat,Y.flat)]
zout:
[(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)等高线
import numpy as np
import matplotlib.pyplot as pltx = np.arange(-5, 5, 0.1)
print(x.shape, x) # (100,)
y = np.arange(-5, 5, 0.1)
print(y.shape, y) # (100,)
xx, yy = np.meshgrid(x, y, sparse=True)
print(xx.shape, yy.shape) # (1, 100) (100, 1)
z = np.sin(xx ** 2 + yy ** 2) / (xx ** 2 + yy ** 2)
h = plt.contourf(x, y, z)
plt.savefig("contour.jpg")
plt.show()
(2)三维等高图绘制:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3Dx = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx ** 2 + yy ** 2) / (xx ** 2 + yy ** 2)print(xx)
print(yy)h = plt.contourf(x, y, z)fig = plt.figure()
ax = Axes3D(fig)
plt.xlabel(r'x', fontsize=20, color='cyan')
plt.ylabel(r'y', fontsize=20, color='cyan')
ax.plot_surface(xx, yy, z, rstride=1, cstride=1, cmap=cm.viridis)
plt.savefig("3D_contour.jpg")
plt.show()
(3)SVC中超平面的绘制:
更多参考:
https://zhuanlan.zhihu.com/p/33579211
Numpy中np.mashgri() 函数介绍及2种应用场景相关推荐
- Numpy中np.indices函数用法详解
np.indices官方文档定义如下: def indices(dimensions, dtype=int, sparse=False):"""Return an arr ...
- 【numpy】numpy中np.nonzero()的用法
nonzero(a) 返回数组a中非零元素的索引值数组. 只有a中非零元素才会有索引值,那些零值元素没有索引值: 返回的索引值数组是一个2维tuple数组,该tuple数组中包含一维的array数组. ...
- numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax)
numpy使用np.argmax函数获取一维数组中最大值所在的索引(index of largest value in numpy array with np.argmax) 目录 numpy使用np ...
- python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)
python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组.使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank) 目录
- python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数
python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...
- python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录
- python中tile的用法_Python:numpy中的tile函数
在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...
- Numpy中使用astype函数将字符串格式数据转换为数值数据类型
Numpy中使用astype函数将字符串格式数据转换为数值数据类型 目录 Numpy中使用astype函数将字符串格式数据转换为数值数据类型 numpy是什么?numpy和list有哪些区别? Num ...
- python 三维数组,numpy中np.shape的理解
python 三维数组,numpy中np.shape的应用 直接贴图对于shape函数一般表示输出数组的形状,对于二维数组就是输出行与列,对于三维数组,shape[0]表示三维数组中包含多少个二维数组 ...
最新文章
- java如何学习javaweb学习课程
- 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)
- BugkuCTF-Reverse题mobile1(gctf)
- PHP EOF(heredoc)的使用方法
- 图形学必备!斯坦福图形学几何处理算法课程1——Surface Reconstruction
- 未来教育 ***java二级考试题库第二十五套错题***
- mysql创建视图语句_查询视图的sql语句(mysql创建视图sql语句)
- 动漫学日语《你的名字》(更新中)
- 产品经理技术脑:怎么看懂接口文档
- 解决vscode的任务栏白色图标的问题
- 农夫山泉2面面试经历
- Alpha版本——展示博客【第二组】
- Python爬虫爬取豆瓣书籍数据
- python批量剪辑音频pydub
- 机器学习隐私保护-MPC通用编译器
- 北京市道路街道区县shape分享
- 元宇宙的雏形?揭秘Meta绝密的现实实验室
- Oracle裁员,N+6赔偿,你只看到幸福感?
- Android studio下JNI(NDK)开发
- 丹青携手日本奇幻大师梦枕貘先生推出巨著《暗狩之师》中文版
热门文章
- 敏捷开发每日报告--day5
- C++ STL库的总结以及实现原理
- 编程菜鸟的日记-初学尝试编程-寻找2到n之间的素数并输出
- 关于手机的完美ROOT和一些问题的解决【OPPOx903亲测通过】
- TextArea的滚动条看不到了,可能与height有关
- A-Grade Browser By Yahoo
- phpwind管理权限泄露漏洞
- 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...
- 以下选项不是python打开方式的是-以下选项中,不是Python对文件的打开模式的是...
- python操作系统-Python_操作系统的发展史