Numpy中Meshgrid函数基本用法及2种应用场景

目录
  • 引言
  • Meshgrid函数的基本用法
  • Meshgrid函数的一些应用场景
  • 总结

引言

近期在好几个地方都看到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),将在后续的文章里做进一步描述。

当然,可能还有些其他场景,这里就不做进一步介绍了。

总结

到此这篇关于Numpy中Meshgrid函数基本用法及2种应用场景的文章就介绍到这了,更多相关Numpy Meshgrid函数用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-08-09

numpy.meshgrid()理解(小结)

本文的目的是记录meshgrid()的理解过程: step1. 通过一个示例引入创建网格点矩阵; step2. 基于步骤1,说明meshgrid()的作用; step3. 详细解读meshgrid()的官网定义; 说明:step1和2 的数据都是基于笛卡尔坐标系的矩阵,目的是为了方便讨论. step1. 通过一个示例引入创建网格点矩阵; 示例1,创建一个2行3列的网格点矩阵. #!/usr/bin/env python3 #-*- coding:utf-8 -*- ###############

详解numpy.meshgrid()方法使用

一句话解释numpy.meshgrid()--生成网格点坐标矩阵. 关键词:网格点,坐标矩阵 网格点是什么?坐标矩阵又是什么鬼? 看个图就明白了: 图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵. 再看个简单例子 A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢? 答案如下: 这就是坐标矩阵--横坐标矩阵XXX中的每个元素,与纵坐标矩阵YYY中对应位置元素,共同构成一个点的完整坐标.如B点坐标 下面可以自己用matplotli

numpy中的meshgrid函数的使用

numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html meshgrid(*xi, **kwargs) 功能:从一个坐标向量中返回一个坐标矩阵 参数: x1,x2...,xn:数组,一维的数组代表网格的坐标. indexing:{'xy','ij'},笛卡尔坐标'xy'或矩阵'ij'下标作为输出,默认的是笛卡尔坐标. sparse:bool类型,如果为True,

关于numpy中np.nonzero()函数用法的详解

np.nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数.一般来说,通过help(np.nonzero)能够查看到该函数的解析与例程.但是,由于例程为英文缩写,阅读起来还是很费劲,因此,本文将其英文解释翻译成中文,便于理解. 解释 nonzero(a) 返回数组a中非零元素的索引值数组. (1)只有a中非零元素才会有索引值,那些零值元素没有索引值: (2)返回的索引值数组是一个2维tuple数组,该tuple数组中包含一维的array数组.其中,一维arra

基于numpy中的expand_dims函数用法

常见的一种应用场景: 条件:假设A的shape为[4, 2],B的shape为[5, 2] 目的:实现A中的每一行, 减去B中的所有行(broadcast操作). 实现: A1 = np.expand_dims(A, -2) => A1的shape变为[4, 1, 2] B1 = np.expand_dims(B, 0) => B1的shape变为[1, 5, 2] A1 - B1 其他示例: wh = np.random.randint(1,3, size=(4,2)) np.expand_

浅谈python numpy中nonzero()的用法

nonzero函数返回非零元素的目录. 返回值为元组, 两个值分别为两个维度, 包含了相应维度上非零元素的目录值. import numpy as np A = np.mat([[0,1,2,3,4,3,2,1,0],[0,1,2,3,4,5,6,7,0]]) x = A.nonzero() #取出矩阵中的非零元素的坐标 print x #输出是一个元组,两个维度.一一对应, #返回非零元素在矩阵中的位置,前一个列表存放非零行坐标,后一个列表存放非零元素列坐标 #(array([0, 0, 0,

numpy中实现二维数组按照某列、某行排序的方法

如何根据二维数组中的某一行或者某一列排序?假设data是一个numpy.array类型的二维数组,可以利用numpy中的argsort函数进行实现,代码实例如下: data = data[data[:,2].argsort()] #按照第3列对行排序 注意:argsort返回的只是排好序后的行索引,不会改变原数组. 按照某行进行排序,可以利用转置操作,代码如下所示: data = data.T(data.T[:,2].argsort()).T # 按照第3行对列进行排序 也可以直接按行进行排序,

Python numpy中矩阵的基本用法汇总

Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价. 直接看一个例子: import numpy as np a = np.mat('1 3;5 7')

浅谈numpy中linspace的用法 (等差数列创建函数)

linspace 函数 是创建等差数列的函数, 最好是在 Matlab 语言中见到这个函数的,近期在学习Python 中的 Numpy, 发现也有这个函数,以下给出自己在学习过程中的一些总结. (1)指定起始点 和 结束点. 默认 等差数列个数为 50. (2)指定等差数列个数 (3)如果数列的元素个数指定, 可以设置 结束点 状态. endpoint : bool, optional If True, stop is the last sample. Otherwise, it is not

Numpy中stack(),hstack(),vstack()函数用法介绍及实例

1.stack()函数 函数原型为:stack(arrays,axis=0),arrays可以传数组和列表.axis的含义我下面会讲解,我们先来看个例子,然后我会分析输出结果. import numpy as np a=[[1,2,3], [4,5,6]] print("列表a如下:") print(a) print("增加一维,新维度的下标为0") c=np.stack(a,axis=0) print(c) print("增加一维,新维度的下标为1&qu

浅析python中numpy包中的argsort函数的使用

概述 argsort()函数在模块numpy.core.fromnumeric中. 在python中排序数组,或者获取排序顺序的时候,我们常常使用numpy包的argsort函数来完成. 如下图所示,是使用python获取到数组中的排序的顺序. data=numpy.array([1,2,3,4,5]) datasort=numpy.argsort(data) datasort Out[39]: array([0, 1, 2, 3, 4], dtype=int64) data Out[40]:

对numpy中的transpose和swapaxes函数详解

transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数. 我们看如下一个numpy的数组: `arr=np.arange(16).reshape((2,2,4)) arr= array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]]) ` 那么有: arr.transpose(2,1,0) array([[[ 0, 8], [ 4, 12]], [[ 1