一、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]]