mgrid与meshgrid生成数据的区别以及与contour等高线的联系

一、meshgrid函数

meshgrid函数通常使用在数据的矢量化上。

它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。

一、mgrid函数

返回多维结构,常见的如2D图形,3D图形。对比np.meshgrid,在处理大数据时速度更快,且能处理多维(np.meshgrid只能处理2维) 
ret = np.mgrid[ 第1维,第2维 ,第3维 , …] 
返回多值,以多个矩阵的形式返回,具体请见代码

下面的xx,yy对应的两个矩阵中,相对应位置上的点组成坐标点,正是网格中所有点的坐标。例如生成等高线分界线

xx, yy = np.mgrid[-3:3:1, -3:3:1]
z=np.random.rand(6,6)
cs=plt.contour(xx,yy,z)
plt.show()
=========================================================
print(z)
[[0.03727376 0.95151217 0.05570532 0.22411104 0.96816118 0.38150866]
 [0.88232991 0.84079983 0.63021421 0.82838102 0.47466549 0.36201358]
 [0.96233517 0.65083492 0.76858392 0.77634627 0.04197187 0.83780362]
 [0.11016477 0.77251635 0.52811971 0.99376375 0.64402523 0.50759017]
 [0.89698112 0.28521291 0.03758289 0.77641507 0.920615   0.29800963]
 [0.65718929 0.57843572 0.9278855  0.95024136 0.06827129 0.10758725]]

结果:用random生成正态分布随机值,也是6*6对应网格中所有的点,后用等高线将近似相同的随机值连线,形成下图.

 

 

 

 

代码清单:

xx, yy = np.mgrid[-3:3:6j, -3:3:6j]
# 6j代表从-3到3一共六个点,间距为6/5=1.2
# [[-3.  -3.  -3.  -3.  -3.  -3. ]
#  [-1.8 -1.8 -1.8 -1.8 -1.8 -1.8]
#  [-0.6 -0.6 -0.6 -0.6 -0.6 -0.6]
#  [ 0.6  0.6  0.6  0.6  0.6  0.6]
#  [ 1.8  1.8  1.8  1.8  1.8  1.8]
#  [ 3.   3.   3.   3.   3.   3. ]]
# [[-3.  -1.8 -0.6  0.6  1.8  3. ]
#  [-3.  -1.8 -0.6  0.6  1.8  3. ]
#  [-3.  -1.8 -0.6  0.6  1.8  3. ]
#  [-3.  -1.8 -0.6  0.6  1.8  3. ]
#  [-3.  -1.8 -0.6  0.6  1.8  3. ]
#  [-3.  -1.8 -0.6  0.6  1.8  3. ]]
# xx,yy=np.meshgrid(xx,yy)
# [[-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]]
# [[-3 -3 -3 -3 -3 -3]
#  [-2 -2 -2 -2 -2 -2]
#  [-1 -1 -1 -1 -1 -1]
#  [ 0  0  0  0  0  0]
#  [ 1  1  1  1  1  1]
#  [ 2  2  2  2  2  2]]


# xx, yy = np.mgrid[-3:3:1, -3:3:1]
# [[-3 -3 -3 -3 -3 -3]
#  [-2 -2 -2 -2 -2 -2]
#  [-1 -1 -1 -1 -1 -1]
#  [ 0  0  0  0  0  0]
#  [ 1  1  1  1  1  1]
#  [ 2  2  2  2  2  2]]
# [[-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]
#  [-3 -2 -1  0  1  2]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值