np.meshgrid()

article/2025/8/27 0:24:36

目录

  • 1.meshgrid函数介绍
  • 2.meshgrid函数官方说明

1.meshgrid函数介绍

参数:
*xi,也就是x1,x2,…,xn :表示网格坐标的一维数组。
copy:默认为True,如果为False,就返回原始数组以节省内存。
sparse:默认值为False如果为True,则返回一个稀疏网格以节省内存。
indexing:输出的笛卡尔(默认为“ xy”)或矩阵(“ ij”)索引。(后面有例子介绍该参数)

return :返回网格坐标矩阵(返回值为list,list中包含各个方向的坐标矩阵)

看到这可能还不是很理解,举个例子就很明白了,如下图所示,下图二维平面中有6个网格坐标,可以看出他们的横坐标为[0, 1, 2],纵坐标为[0, 1],倘若只知道他们的横坐标和纵坐标的一维数组,怎么构建这6个网格坐标,meshgrid的作用就是这个。
在这里插入图片描述

>>> a = [0, 1, 2]
>>> b = [0, 1]
>>> np.meshgrid(a,b)
[array([[0, 1, 2],[0, 1, 2]]), array([[0, 0, 0],[1, 1, 1]])]
>>>

返回的结果现在还不是6个点的坐标,但是将a中的元素与b中的每个元素一一对应就得到了上述6个点的坐标。

那么indexing的作用是什么呢?

>>> np.meshgrid(a,b,indexing = 'ij')
[array([[0, 0], [1, 1],[2, 2]]), array([[0, 1],[0, 1], [0, 1]])]
>>>

也就是若indexing = ‘xy’,返回的矩阵形状为(N2, N1, N3,…Nn),其中Ni = len(xi)。若indexing = ‘ij’,则返回的矩阵形状为(N1, N2, N3,…Nn)。具体的影响就是处理数据时,读取数据方式不同。

 xv, yv = np.meshgrid(x, y, sparse=False, indexing='ij')for i in range(nx):for j in range(ny):# treat xv[i,j], yv[i,j]xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')for i in range(nx):for j in range(ny):# treat xv[j,i], yv[j,i]

sparse为True时,返回稀疏的网格(为了节省内存),也就是该坐标矩阵下的元素有哪些(由于每行/列下的元素都一样,所以返回一行或一列就可以知道该坐标矩阵下的元素)。

>>> x = np.meshgrid(a,b,sparse= True)
>>> x
[array([[0, 1, 2]]), array([[0],[1]])]
>>>

接下来把meshgrid的结果变为最终的坐标点

>>> a = [0, 1, 2]
>>> b = [0, 1]
>>> np.meshgrid(a,b)
[array([[0, 1, 2],[0, 1, 2]]), array([[0, 0, 0],[1, 1, 1]])]
>>> x, y = np.meshgrid(a,b)
>>> x.flatten()[:, np.newaxis]
array([[0],[1],[2],[0],[1],[2]])
>>> y.flatten()[:, np.newaxis]
array([[0],[0],[0],[1],[1],[1]])
>>> xx = x.flatten()[:, np.newaxis]
>>> yy = y.flatten()[:, np.newaxis]
>>> np.c_[xx, yy]
array([[0, 0],[1, 0],[2, 0],[0, 1],[1, 1],[2, 1]])
>>>

np.newaxis介绍:可以在数组索引中使用np.newaxis对象添加大小为1的新尺寸,如:

>>> a.shape
(5, 7)
>>> a[:,np.newaxis,:].shape
(5, 1, 7)>>> x = np.arange(5)
>>> x[:, np.newaxis]
array([[0],[1],[2],[3],[4]])
>>>

np.flatten()介绍:
原型声明:def flatten(self, order='C'):

Parameters
order{‘C’, ‘F’, ‘A’, ‘K’}, optional
“ C”表示按行优先(C样式)的顺序展平。“ F”表示按列主(Fortran样式)的顺序展平。“ A”表示如果a在内存中是连续的,则按列优先顺序进行展平;否则,按行优先进行展平。“ K”表示按元素在内存中出现的顺序展平 。默认值为“ C”。
Returns
返回展平为一维的数组副本。


2.meshgrid函数官方说明

meshgrid的官方api

def meshgrid(*xi, copy=True, sparse=False, indexing='xy'):"""Return coordinate matrices from coordinate vectors.Make N-D coordinate arrays for vectorized evaluations ofN-D scalar/vector fields over N-D grids, givenone-dimensional coordinate arrays x1, x2,..., xn... versionchanged:: 1.91-D and 0-D cases are allowed.Parameters----------x1, x2,..., xn : array_like1-D arrays representing the coordinates of a grid.indexing : {'xy', 'ij'}, optionalCartesian ('xy', default) or matrix ('ij') indexing of output.See Notes for more details... versionadded:: 1.7.0sparse : bool, optionalIf True a sparse grid is returned in order to conserve memory.Default is False... versionadded:: 1.7.0copy : bool, optionalIf False, a view into the original arrays are returned in order toconserve memory.  Default is True.  Please note that``sparse=False, copy=False`` will likely return non-contiguousarrays.  Furthermore, more than one element of a broadcast arraymay refer to a single memory location.  If you need to write to thearrays, make copies first... versionadded:: 1.7.0Returns-------X1, X2,..., XN : ndarrayFor vectors `x1`, `x2`,..., 'xn' with lengths ``Ni=len(xi)`` ,return ``(N1, N2, N3,...Nn)`` shaped arrays if indexing='ij'or ``(N2, N1, N3,...Nn)`` shaped arrays if indexing='xy'with the elements of `xi` repeated to fill the matrix alongthe first dimension for `x1`, the second for `x2` and so on.Notes-----This function supports both indexing conventions through the indexingkeyword argument.  Giving the string 'ij' returns a meshgrid withmatrix indexing, while 'xy' returns a meshgrid with Cartesian indexing.In the 2-D case with inputs of length M and N, the outputs are of shape(N, M) for 'xy' indexing and (M, N) for 'ij' indexing.  In the 3-D casewith inputs of length M, N and P, outputs are of shape (N, M, P) for'xy' indexing and (M, N, P) for 'ij' indexing.  The difference isillustrated by the following code snippet::xv, yv = np.meshgrid(x, y, sparse=False, indexing='ij')for i in range(nx):for j in range(ny):# treat xv[i,j], yv[i,j]xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')for i in range(nx):for j in range(ny):# treat xv[j,i], yv[j,i]In the 1-D and 0-D case, the indexing and sparse keywords have no effect.See Also--------index_tricks.mgrid : Construct a multi-dimensional "meshgrid"using indexing notation.index_tricks.ogrid : Construct an open multi-dimensional "meshgrid"using indexing notation.Examples-------->>> nx, ny = (3, 2)>>> x = np.linspace(0, 1, nx)>>> y = np.linspace(0, 1, ny)>>> xv, yv = np.meshgrid(x, y)>>> xvarray([[0. , 0.5, 1. ],[0. , 0.5, 1. ]])>>> yvarray([[0.,  0.,  0.],[1.,  1.,  1.]])>>> xv, yv = np.meshgrid(x, y, sparse=True)  # make sparse output arrays>>> xvarray([[0. ,  0.5,  1. ]])>>> yvarray([[0.],[1.]])`meshgrid` is very useful to evaluate functions on a grid.>>> import matplotlib.pyplot as plt>>> x = np.arange(-5, 5, 0.1)>>> y = np.arange(-5, 5, 0.1)>>> xx, yy = np.meshgrid(x, y, sparse=True)>>> z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2)>>> h = plt.contourf(x,y,z)>>> plt.show()"""

http://chatgpt.dhexx.cn/article/ARQjrVJM.shtml

相关文章

【matlab】meshgrid的使用

函数参数列表 [X,Y] meshgrid(x,y) [X,Y] meshgrid(x) [X,Y,Z] meshgrid(x,y,z) [X,Y,Z] meshgrid(x) meshgrid可以生成2D或者3D的矩阵, 如果为2D,矩阵的shape为(y.length, x.length) 如果为3D,矩阵的shape为&a…

np.meshgrid

np.meshgrid参考 官方文档给出的解释 Return coordinate matrices from coordinate vectors. Make N-D coordinate arrays for vectorized evaluations of N-D scalar/vector fields over N-D grids, given one-dimensional coordinate arrays x1, x2,…, xn. 参数 indexing : …

meshgrid方法

目录 meshgrid 绘制曲面图三维网络 meshgrid meshgrid 和 mesh 方法的差别在于是否会画出栅格线 绘制曲面图 生成绘制3D图形所需的网格数据。因为在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点来绘制出整个图形。 涉及到x、y这两组数…

matlab meshgrid作用,【 MATLAB 】ndgrid 和 meshgrid 对比理解以及应用

目录 背景 本博文主要分析 ndgrid, meshgrid是附送的,都是类似的东西,学会了一个,另一个很容易就理解了。 为什么会对 ndgrid 感兴趣呢?因为对它的不理解,导致我少写了几篇博文,最后&#xff0c…

Meshgrid用法

在matlab绘制三维曲面图或三维网格图时经常会用到meshgrid指令 比如:通常在确定向量x,y的基础上,使用meshgrid生成新的矩阵数据[X,Y],再输入函数Zf(X,Y),最后使用mesh或surf命令生成三维网格图或三维曲面图。 那么meshgrid指令究竟是什么意思呢&#x…

【matlab】函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法

------------------------------------------------------------------ meshgrid 函数用来生成网格矩阵,可以是二维网格矩阵。 exp1_1:生成二维网格,用法为:[x y]meshgrid(a b); % a 和b是一维数组,如a[1 2 3]; b [2 3 4]; 则生成…

Python基础(二):Numpy函数介绍:Meshgrid,mgrid,append等

文章目录 np.meshgrid函数np.mgrid函数np.append()函数 [5]参考资料 np.meshgrid函数 meshgrid函数通常使用在数据的矢量化上。它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。 meshgrid的作用是&#xf…

【Python】Numpy 中 Meshgrid 函数介绍及简单应用

简单介绍Meshgrid 文字解释 Meshgrid功能为将两个坐标轴上的点转化为平面上的网格,即将两组一维数据分别转化为二维数据,原理为简单复制(通过简单复制将以为数组转化为二维数组,即格点)。 以上的详细解释&#xff1a…

图像处理之matlab中meshgrid函数用法详解

一、meshgrid()函数基本调用格式 meshgrid函数用来生成网格矩阵,既可以是二维网格矩阵,又可以是三维网格矩阵。 1、[X,Y] meshgrid(x,y) :基于向量x和y中包含的坐标返回二维网格坐标。X是一个矩阵,每一行是x的一个副本,Y也是一…

python meshgrid()理解

本文的目的是记录meshgrid()的理解过程: step1. 通过一个示例引入创建网格点矩阵; step2. 基于步骤1,说明meshgrid()的作用; step3. 详细解读meshgrid()的官网定义; 说明:step1和2 的数据都是基于笛卡尔坐标系的矩阵,目的是为了方便讨论。 step1. 通…

[MATLAB]中meshgrid函数的用法与实践(学习笔记)

今天在看点目标成像仿真程序的时候,看到了meshgrid函数,看了matlab的帮助文档后理解了一点,特此记录学习过程。 目录 一、meshgrid函数二、举例验证 三、创建二维网格绘制曲面图四、总结五、meshgrid函数源代码(仅供参考&#xff…

计算机网络原理(交换机,路由器详解)

前言 本人是大一新生,对网络知识的了解也只是一知半解,虽然煞费苦心,但这篇文章中肯定还会有很多错误,希望大佬们发现问题后能予以纠正 网络协议 这些东西主要涉及在局域网,osi模型中处在第二层和第三层&#xff0c…

交换机和路由器区别

交换机路由器简单理解 以快递为例: 首先我们要把我们传输的数据就比拟成收发的快递货物。 然后我们要知道的是,我们手中的手机和电脑等一些使用设备,它们都有一个固定的MAC地址,这个MAC地址就相当于快递系统中的接收人&#xf…

以太网交换机和路由器的区别(转载)

以太网交换机和路由器是两个不同的网络设备,很多朋友却弄不清楚它们彼此之间的区别,下面简单介绍下。 在osi七层模型上来分析,交换机在第二层工作,路由器在第三层上工作。但是随着技术的发展,一些交换机集成了一些第三…

交换机和路由器有什么区别

交换机 (英文:Switch,意为“开关”)是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。 路由器 (Router&#xf…

交换机与路由器技术

交换机的基本配置 一、思科设备命令行基础 1、进入设备命令行界面 设备支持命令行 去看设备上的接口,是否有console 需要用超级终端进行连接 puttsecret CRTXshell 2、命令行基础 思科设备上的命令行模式 用户模式:查看统计信息(一般情况下用的非常…

思科交换机和路由器

交换机 进入模式 no switchport: no switchport这条命令的意思是:可以把二层接口改为三层接口,也就是说相当于一个路由器上的接口。no switch 实际上是no switchport的简写,而switchport就是交换口,也就是二层接口,…

三层交换机与路由器的区别

一、三层交换机 三层交换机就是具有部分路由器功能的交换机,工作在OSI网络标准模型的第三层:网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多…

交换机和路由器的区别是什么?

交换机和路由器的区别: ◆ 路由器可以给你的局域网自动分配IP,虚拟拨号,就像一个交通警察,指挥着你的电脑该往哪走,你自己不用操心那么多了。 交换机只是用来分配网络数据的。 ◆ 路由器可以把一个IP分配给很多个主机…

网络/交换机和路由器区别

计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种“互连”并没有什么实 际意义。因此通常在谈到“互连”时,就已经暗示这些相互连接的计算机是可以进行通信的&…