python中grid函数_Python-Numpy模块Meshgrid函数

Numpy中关于Meshgrid函数:meshgrid官方。

1.Meshgrid前言

meshgrid函数就是用两个坐标轴上的点在平面上画网格(当然这里传入的参数是两个的时候)。当然我们可以指定多个参数,比如三个参数,那么我们的就可以用三个一维的坐标轴上的点在三维平面上画网格。

2.Meshgrid的参数numpy.meshgrid(* xi,** kwargs ) 。array_like代表网格坐标的一维数组,这里可以传入多个一维数组的值。但是这里需要注意的就是如果我们给传入的是一个矩阵(多维数组)的话,他会自动把这个矩阵转换成一维数组;

索引(indexing):('xy'[笛卡尔],'ij'[矩阵]),可选。默认是'xy',下面会详细解释一下;

稀疏(sparse):bool,可选。默认为False。如果为True为了节省内存会返回一个稀疏矩阵;

复制(copy):bool,可选。默认为True。如果为False则为了节省内存返回源始的视图。

返回值: :ndarray。对于二维数组来说,我们的参数是

两个一维数组,我们设

形状为N,

的形状为M。那么他的返回值是一个list列表,里面存放着两个矩阵,我们可以通过解包操作来获取

两个矩阵,这里的返回值

。我们指定了indexing参数,如果indexing = 'xy'(默认)我们返回的

矩阵的形状是(M,N);如果indexing = 'ij'的话我们返回的

矩阵的形状就是(N,M)。

3.indexing参数

上面介绍了indexing参数有两个值'xy'和'ij',默认值为'xy'。那他们两个之间有什么区别呢?其中'xy'代表的是笛卡尔,'ij'代表的是矩阵。我们直接通过结果来看。

import numpy as np

x = np.array([1,2,3])

y = np.array([4,5,6,7])

xv,yv = np.meshgrid(x,y,indexing = 'xy')

xv2,yv2 = np.meshgrid(x,y,indexing = 'ij')

print('-----向量的形状-----')

print(x.shape)

print(y.shape)

print('-----xy-----')

print(xv.shape)

print(yv.shape)

print('-----ij-----')

print(xv2.shape)

print(yv2.shape)

-----向量的形状-----

(3,)

(4,)

-----xy-----

(4, 3)

(4, 3)

-----ij-----

(3, 4)

(3, 4)

从上面我们可以看出,对于二维数组来说,对于两个长度为3和4的一维数组,我们设N = 3 ,M = 4。对于我们indexing = 'xy'(默认)来说,得到xv以及yv矩阵的形状是(M,N)也就是(4,3);那对于indexing = 'ij'我们的xv以及yv矩阵的形状是(N,M)也就是(3,4)。

那对于三维来说,参数是三个一维数组,并且一维数组的形状分别是N,M,P,那么如果indexing = 'xy'的话返回的三个矩阵xv,yv,zv的形状都是(M,N,P);如果indexing = 'ij'的话返回的是三个矩阵xv,yv,zv的形状都是(N,M,P)

import numpy as np

x = np.array([1,2,3])

y = np.array([4,5,6,7])

xv, yv = np.meshgrid(x, y, sparse=False, indexing='ij')

for i in zip(xv.flat,yv.flat):

print(i)

print('----------')

xv, yv = np.meshgrid(x, y, sparse=False, indexing='xy')

for i in zip(xv.flat,yv.flat):

print(i)运行结果

4.如何使用xv,yv = meshgrid(x,y)

xv,yv = meshgrid(x)与xv,yv = meshgrid(x,x)是等同的

xv,yv,zv = meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图

上面的这些都是直接进行解包后的返回值。其实他返回的是一个list列表,列表中存放的xv,yv,zv的这些numpy数组。

import numpy as np

x = np.array([1,2,3]) #X_{x} = 3

y = np.array([4,5,6,7]) #X_{y} = 4

xv,yv = np.meshgrid( x , y )

print(xv)

print(yv)

[[1 2 3]

[1 2 3]

[1 2 3]

[1 2 3]]

[[4 4 4]

[5 5 5]

[6 6 6]

[7 7 7]]

我们通过对两个参数来一步一步的分析来看,看得到的结果是如何变成一个网格的:x:表示我们的一维向量(1,2,3),他的N = 3

y:表示我们的一维向量(4,5,6,7),他的N = 4

xv:表示x坐标轴上的坐标矩阵

yv:表示y坐标轴上的坐标矩阵

x = np.array([1,2,3]) #x = (x1,x2,x3)

y = np.array([4,5,6,7]) #y = (y1,y2,y3,y4)

xv,yv = np.meshgrid( x , y )xv矩阵

我们把我们的一维向量

看成了

,我们也可以看上面我输出的xv[[1 2 3]

[1 2 3] [1 2 3] [1 2 3]],如果看成是

,也就是4个向量,如图所示。yv矩阵

我们把我们的y向量看成了

,然后我们从上面的打印出来的结果[[4 4 4] [5 5 5][6 6 6] [7 7 7]],我们的向量被竖着放起,然后推广成三列。正如我们的yv矩阵所示。

我们的两个一维数组形成的网格,我们就可以通过上面的分析得到:网格化数据左边与其对应值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
numpy.meshgrid是一个用于生成坐标矩阵的函数。它的语法为X, Y = numpy.meshgrid(x, y),其x和y是输入的一维数组,表示网格点的横纵坐标列向量。函数会返回两个坐标矩阵X和Y,它们的形状与输入数组x和y相同。这些坐标矩阵表示了每个点在x和y维度上的坐标。这些坐标矩阵可以用于绘制二维图形或进行数据分析。例如,你可以使用这些坐标矩阵来绘制散点图或曲线图。下面是一个示例代码: import numpy as np import matplotlib.pyplot as plt x = np.array([0, 1, 2]) y = np.array([0, 1]) X, Y = np.meshgrid(x, y) plt.plot(X, Y, color='red', marker='.', linestyle='') plt.grid(True) plt.show() 在这个示例,我们定义了两个一维数组x和y,然后使用meshgrid函数生成了两个坐标矩阵X和Y。最后,我们使用plot函数将这些坐标矩阵绘制成红色的散点图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Python】Numpy Meshgrid 函数介绍及简单应用](https://blog.csdn.net/SummerFadesAway/article/details/104172839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [numpy.meshgrid()用法](https://blog.csdn.net/qq_40107571/article/details/131492136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [(十一)numpymeshgrid使用](https://blog.csdn.net/lx_ros/article/details/126556637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值