Numpy中Meshgrid函数介绍及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的维度都是 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),将在后续的文章里做进一步描述。
当然,可能还有些其他场景,这里就不做进一步介绍了。

如果您喜欢我的文章,欢迎关注微信公众号:Python数据之道(ID:PyDataRoad)

?

时间: 2024-11-04 16:30:47

Numpy中Meshgrid函数介绍及2种应用场景的相关文章

几何画板中作函数图像的几种方法

随着社会的发展,现代教学很多的地方都有了多媒体教学,这就需要一些教学软件的辅助了,几何画板就是其中之一.一些老师在使用几何画板的过程中,常常涉及到函数图象的绘制.因此,很多用户对这方面教程是非常的感兴趣的.下面就给大家分享一下几何画板中作函数图像的几种方法? 一.直接法 例1  画函数y=sinx在R上的图象. 操作步骤:单击“图表”菜单下“绘制新函数”f(x)=sinx. 二.轨迹法 例2  画函数y=(1/4)x^2在区间[-2,3]上的图象. 操作步骤: (1)单击“绘图”菜单下“绘制点”

matlab中meshgrid函数的用法

在MATLAB中遇到了meshgrid函数,对其使用方式并不是很熟悉,查阅到资料了解到这个函数的主要用法 这个函数主要就是在划分网格的时候可以进行使用 [X,Y] = meshgrid(xgv,ygv),其中X,Y是大小相等的两个矩阵,xgv,ygv是两个矩阵矢量 X:通过将xgv复制length(ygv)行(严格意义上是length(ygv)-1行)得到Y:首先对ygv进行转置得到ygv',将ygv'复制(length(xgv)-1)次得到.例如 [X,Y] = meshgrid(1:3,10

JavaScript 中的函数介绍

简而言之函数只不过是一组执行某个操作的语句.函数可能会有一些输入参数(在函数体中使用),并在执行后返回值. JavaScript函数也具有这些特性,但它们不仅仅是常规函数.JavaScript函数是对象.你可以查看我曾经写的关于JavaScript对象的文章,里面我提到几乎JavaScript中的所有一切都是对象. 作为对象,JavaScript函数可能会有属性和其他函数(方法).让我们来看看JavaScript中的一个典型的函数定义. function myNotSoGreatFunc(vis

numpy中tile函数

tile函数位于python模块numpy.lib.shape_base中,他的功能是重复某个数组. 函数的形式是tile(A,reps) 函数参数说明中提到A和reps都是array_like的,什么是array_like的parameter呢?在网上查了一下,始终搞不明白,便把熟悉的python数据类型都试了一下,得出以下结论. A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类

关于numpy中的函数return中加入字符串类型数据后,小数点精度变化

weekdays.pyimport numpy as npfrom datetime import datetimedef datestr2num(s): return datetime.strptime(s.decode('ascii'), "%d-%m-%Y").date().weekday() dates, open, high, low, close=np.loadtxt('data.csv', dtype=float, delimiter=',', usecols=(1, 3

numpy中位操作函数和比较函数

位操作函数和比较函数 位操作函数可以在整数或整数数组的位上进行操作 Key_Function xor操作符, 当两个操作数的符号不一致时, 结果为负数 位操作符: ^ 对应bitwise_xor函数, 当两个元素的正负号不一致时, 返回是负数的那个数字 & 对二进制字节进行AND操作, 只有都是1的时候才返回1 | << 位的左移, 数值翻倍 >> 位的右移, 数值减半 比较运算符: <  对应less函数, 这个就是小于符号 > 大于符号 ==  等于符号 C

【转】C语言mem.h中的函数介绍

函数名称:     memccpy函数原型:     void *memccpy(void *dest, const void *src, int c, size_t n)函数功能:     字符串拷贝,到指定长度或遇到指定字符时停止拷贝函数返回:参数说明:     src-源字符串指针,c-中止拷贝检查字符,n-长度,dest-拷贝底目的字符串指针所属文件:     string.h,mem.h #include string.h#include stdio.hint main(){    c

SQL中 decode() 函数介绍

decode() 函数的语法: 1 Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 2 3 From talbename 4 5 Where - 其中:columnname为要选择的table中所定义的column:  缺省值可以是你要选择的column name本身,也可以是你想定义的其他值,比如Other等: 主要作用:相当于IF语句, 将查询结果翻译成其他值.(即以其他形式表现出来). 举例说明: 现定义一table名为ou

numpy中arange函数内起始值必须大于结束值,否则生成为空的一维数组

1 >>> import numpy as np 2 >>> arr=np.arange(10,0.1) 3 >>> print('a=',arr) 4 a= [] 5 >>> arr=np.arange(10) 6 >>> print('a=',arr) 7 a= [0 1 2 3 4 5 6 7 8 9] 8 >>> arr=np.arange(0,10,0.1) 9 >>>