@[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种应用场景相关推荐

  1. Numpy中np.indices函数用法详解

    np.indices官方文档定义如下: def indices(dimensions, dtype=int, sparse=False):"""Return an arr ...

  2. 【numpy】numpy中np.nonzero()的用法

    nonzero(a) 返回数组a中非零元素的索引值数组. 只有a中非零元素才会有索引值,那些零值元素没有索引值: 返回的索引值数组是一个2维tuple数组,该tuple数组中包含一维的array数组. ...

  3. 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 ...

  4. 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) 目录

  5. python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数返回浮点数

    python使用numpy的np.float_power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点 ...

  6. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数

    python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方.立方).np.power函数默认返回整数格式.np.float_power函数默认返回浮点数 目录

  7. python中tile的用法_Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  8. Numpy中使用astype函数将字符串格式数据转换为数值数据类型

    Numpy中使用astype函数将字符串格式数据转换为数值数据类型 目录 Numpy中使用astype函数将字符串格式数据转换为数值数据类型 numpy是什么?numpy和list有哪些区别? Num ...

  9. python 三维数组,numpy中np.shape的理解

    python 三维数组,numpy中np.shape的应用 直接贴图对于shape函数一般表示输出数组的形状,对于二维数组就是输出行与列,对于三维数组,shape[0]表示三维数组中包含多少个二维数组 ...

最新文章

  1. java如何学习javaweb学习课程
  2. 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)
  3. BugkuCTF-Reverse题mobile1(gctf)
  4. PHP EOF(heredoc)的使用方法
  5. 图形学必备!斯坦福图形学几何处理算法课程1——Surface Reconstruction
  6. 未来教育 ***java二级考试题库第二十五套错题***
  7. mysql创建视图语句_查询视图的sql语句(mysql创建视图sql语句)
  8. 动漫学日语《你的名字》(更新中)
  9. 产品经理技术脑:怎么看懂接口文档
  10. 解决vscode的任务栏白色图标的问题
  11. 农夫山泉2面面试经历
  12. Alpha版本——展示博客【第二组】
  13. Python爬虫爬取豆瓣书籍数据
  14. python批量剪辑音频pydub
  15. 机器学习隐私保护-MPC通用编译器
  16. 北京市道路街道区县shape分享
  17. 元宇宙的雏形?揭秘Meta绝密的现实实验室
  18. Oracle裁员,N+6赔偿,你只看到幸福感?
  19. Android studio下JNI(NDK)开发
  20. 丹青携手日本奇幻大师梦枕貘先生推出巨著《暗狩之师》中文版

热门文章

  1. 敏捷开发每日报告--day5
  2. C++ STL库的总结以及实现原理
  3. 编程菜鸟的日记-初学尝试编程-寻找2到n之间的素数并输出
  4. 关于手机的完美ROOT和一些问题的解决【OPPOx903亲测通过】
  5. TextArea的滚动条看不到了,可能与height有关
  6. A-Grade Browser By Yahoo
  7. phpwind管理权限泄露漏洞
  8. 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...
  9. 以下选项不是python打开方式的是-以下选项中,不是Python对文件的打开模式的是...
  10. python操作系统-Python_操作系统的发展史