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

article/2025/8/27 2:48:31

文章目录

    • np.meshgrid函数
    • np.mgrid函数
    • np.append()函数 [5]
    • 参考资料

np.meshgrid函数

meshgrid函数通常使用在数据的矢量化上。它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。

meshgrid的作用是:根据传入的两个一维数组参数生成两个数组元素的列表。如果第一个参数是xarray,维度是xdimesion,第二个参数是yarray,维度是ydimesion。那么生成的第一个二维数组是以xarray为行,共ydimesion行的向量;而第二个二维数组是以yarray的转置为列,共xdimesion列的向量。
在这里插入图片描述

在这里插入图片描述
经常用来生产网格点:示例,生成一个20行30列的网格点矩阵[3]

x = np.linspace(0,500,30)
print("x的维度:{},shape:{}".format(x.ndim, x.shape))
print(x)
y = np.linspace(0,500,20)
print("y的维度:{},shape:{}".format(y.ndim, y.shape))
print(y)xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))plt.plot(xv, yv, '.')
plt.grid(True)
plt.show()

在这里插入图片描述
在这里插入图片描述

np.mgrid函数

用法:返回多维结构,常见的如2D图形,3D图形。对比np.meshgrid,在处理大数据时速度更快,且能处理多维(np.meshgrid只能处理2维)
ret = np.mgrid[ 第1维,第2维 ,第3维 , …]
返回多值,以多个矩阵的形式返回,第1返回值为第1维数据在最终结构中的分布,第2返回值为第2维数据在最终结构中的分布,以此类推。(分布以矩阵形式呈现)。

看一个例子,下面的步长为复数表示点数,左闭右闭,步长为实数表示间隔,左闭右开

X1,Y1 = np.mgrid[1:3:3j,4:5:2j]  #1-3,shape= 3*2,X1
Y1
array([[1., 1.],[2., 2.],[3., 3.]])array([[4., 5.],[4., 5.],[4., 5.]])

在这里插入图片描述

例如3D结构 (3D立方体),如下[1]:

>>> res = np.mgrid[-1:1:2j,-2:2:3j,-3:3:5j]  # x,y,z = res
>>> print(res)
[[[[-1.  -1.  -1.  -1.  -1. ][-1.  -1.  -1.  -1.  -1. ][-1.  -1.  -1.  -1.  -1. ]][[ 1.   1.   1.   1.   1. ][ 1.   1.   1.   1.   1. ][ 1.   1.   1.   1.   1. ]]][[[-2.  -2.  -2.  -2.  -2. ][ 0.   0.   0.   0.   0. ][ 2.   2.   2.   2.   2. ]][[-2.  -2.  -2.  -2.  -2. ][ 0.   0.   0.   0.   0. ][ 2.   2.   2.   2.   2. ]]][[[-3.  -1.5  0.   1.5  3. ][-3.  -1.5  0.   1.5  3. ][-3.  -1.5  0.   1.5  3. ]][[-3.  -1.5  0.   1.5  3. ][-3.  -1.5  0.   1.5  3. ][-3.  -1.5  0.   1.5  3. ]]]]

np.append()函数 [5]

函数np.append(arr, values, axis=None)
作用:为原始np array添加一些values
返回:添加了values的新数组

参数:

  • arr:需要被添加values的数组
  • values:添加到数组arr中的值(array_like,类数组)
  • axis:可选参数,如果axis没有给出,那么arr,values都将先展平成一维数组。注:如果axis被指定了,那么arr和values需要有相同的shape,否则报错:ValueError: arrays must have same number of dimensions

补充对axis的理解:
axis的最大值为数组arr的维数-1,如arr维数等于1,axis最大值为0;arr维数等于2,axis最大值为1,以此类推。
当arr的维数为2(理解为单通道图),axis=0表示沿着行方向添加values;axis=1表示沿着列方向添加values
当arr的维数为3(理解为多通道图),axis=0,axis=1时同上;axis=2表示沿着深度方向添加values

例子:
(1)不考虑axis:arr,values都将先展平成一维数组,然后沿着axis=0的方向在arr后添加values

import numpy as np
a=[1,2,3]
b=[4,5]
c=[[6,7],[8,9]]
print(np.append(a,b))
print(np.append(a,c))
>>>
[1 2 3 4 5]
[1 2 3 6 7 8 9]

(2)考虑axis:arr,values的shape相同

import numpy as np
a=[1,2,3]
b=[4,5]
c=[[6,7],[8,9]]
d=[[10,11],[12,13]]
print('在一维数组a后添加values,结果如下:{}'.format(np.append(a,b,axis=0)))
print('沿二维数组c的行方向添加values结果如下:'.format(np.append(c,d,axis=0)))
print('沿二维数组c的列方向添加values结果如下:'.format(np.append(c,d,axis=1)))
print('使用了axis,若arr和values的形状不同,则报错:'.format(np.append(a,c,axis=0)))
>>>
在一维数组a后添加values,结果如下:
[1 2 3 4 5]
沿二维数组c的行方向添加values结果如下:
[[ 6  7][ 8  9][10 11][12 13]]
沿二维数组c的列方向添加values结果如下:
[[ 6  7 10 11][ 8  9 12 13]]

(3)考虑axis,如果arr和values的形状不同,则报错:

import numpy as np
a=[1,2,3]
c=[[6,7],[8,9]]
print(np.append(a,c,axis=0))
>>>
Traceback (most recent call last):File "F:\eclipse-workspace\test\t1.py", line 4, in <module>print(np.append(a,c,axis=0))File "E:\anaconda\anzhuang\lib\site-packages\numpy\lib\function_base.py", line 4694, in appendreturn concatenate((arr, values), axis=axis)
ValueError: all the input arrays must have same number of dimensions

参考资料

[1] https://www.cnblogs.com/shenxiaolin/p/8854197.html
[2] np.meshgrid和np.mgrid
[3] Numpy中的meshgrid()函数
[4] Python-Numpy模块Meshgrid函数
[5] https://blog.csdn.net/weixin_42216109/article/details/93889047


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

相关文章

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

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

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

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

python meshgrid()理解

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

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

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

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

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

交换机和路由器区别

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

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

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

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

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

交换机与路由器技术

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

思科交换机和路由器

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

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

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

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

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

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

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

交换机和路由器

交换机只有交换的功能&#xff0c;用于组建局域网 路由器用来连接外网&#xff08;局域网和互联网相连接&#xff09;&#xff0c;路由器也叫网关 也就是说路由器是用来连接两个子网&#xff0c;交换机是用来连接一个子网内不同的计算机 路由器是基于ip寻址&#xff0c;交换机…

【交换机和路由器的区别】

一.交换机? 交换机的作用:把数据包发送到正确的位置 交换机工作的方式:依照MAC地址和物理端口的关系映射表,也叫MAC地址表,通过数据包上的目标MAC地址,找到他对应的物理端口. 1.物理端口如何和MAC地址建立映射关系? 通过网线! 一个交换机本身就带有很多端口,每一个端口有自己…

浅谈交换机和路由器的区别

网络在我们的生活学习中已经成为了必须的东西&#xff0c;也许 ”世界上最遥远的距离就是没网“&#xff0c;而路由器和交换机这两种联网的中继设备最常见。如下图左为交换机&#xff0c;右为路由器。那么到底路由器和交换机有哪些区别呢&#xff1f;他们在网络的组建方面各自扮…

交换机与路由器的配置

交换机与路由器的配置 一、交换机的基本配置 配置enable口令、密码和主机名 Switch> (用户执行模式提示符) Switch>enable (进入特权模式) Switch# (特权模式提示符) Switch#config terminal (进入配置模式) Switch(config)#enable password cisco (设置enable passwor…

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

我&#xff1a;度娘度娘&#xff0c;交换机和路由器的区别是什么呢&#xff1f; 度娘&#xff1a;一个工作在第二层数据链路层&#xff0c;一个工作在第三层网络层。 我&#xff1a;哈&#xff1f;那工作在不同层会有什么区别&#xff1f;为什么要工作在不同层&#xff1f; …

关于路由器和交换机的区别图解(总结)

简介 路由器是在交换机的基础上发展而来&#xff1a; 路由器又被称为网关设备&#xff0c;用于连接多个逻辑上分开的网络&#xff0c;它是不同网段通信的桥梁。路由器是在交换机的基础上发展而来&#xff0c;它们之间在概念上有一定的重叠但也有很大的不同&#xff0c;交换机泛…

路由器和交换机的区别

相信有很多人在学习网络的过程中&#xff0c;都会对路由器与交换机的区别与联系感到疑惑不解&#xff0c;因为这两台设备的功能看起来似乎一样。然而&#xff0c;其实路由器与交换机大有不同&#xff0c;下面是我对此的一些理解&#xff0c;希望能够帮助到你&#xff01; 它们…