这个np.mgrid[ 起始值: 结束值: 步长,起始值: 结束值: 步长, … ]
表示的一个[起始值,结束值)的数组,其中间隔为步长。
而x.ravel( ) 将x变为一维数组,“把.前变量拉直”
这样讲很难理解,直接看例子,来吧!
1.首先看这个二维数组例子
import numpy as np
# 生成等间隔数值点
x, y = np.mgrid[1:3:1, 2:4:0.5]
# 将x, y拉直,并合并配对为二维张量,生成二维坐标点
grid = np.c_[x.ravel(), y.ravel()]
print("x:\n", x)
print("y:\n", y)
print("x.ravel():\n", x.ravel())
print("y.ravel():\n", y.ravel())
print('grid:\n', grid)
生成的结果如上图所示,是一个2行4列的二维数组,之所示是两行四列的是因为行数看x,x:[1,2]则有两行,列数看y,y:[2,2.5,3,3.5]则有4列,为什么这样扩充呢?
是因为为了画网格啊,下面是我用手画的图,供大家参考:
2.看这个三维数组的例子
import numpy as np # 导入numpy模块
x, y, z = np.mgrid[1:2:0.5, 2:4:0.5, 3:6:1]
grid = np.c_[x.ravel(), y.ravel(), z.ravel()]
print('x:\n', x)
print('y:\n', y)
print('z:\n', z)
print("x.ravel():\n", x.ravel())
print("y.ravel():\n", y.ravel())
print("z.ravel():\n", z.ravel())
print('grid:\n', grid)
这个截图真的太长了,因为换行了,
这个第一个参数是有三个参数时,x,y,z,均为三维数组,三维数组内的二维数组数由第一个参数1:2:0.5决定,为2;
二维数组的行数由第二个参数2:4:0.5决定,为4;
二维数组的列数由第三个参数3:6:1决定,为3。
排布规律也很明显,
x是三维数组,在跨二维数组的方向上排布1,1.5;
y是三维数组,在跨行方向上排布2,2.5,3,3.5;
z是三维数组,在跨列方向上排布3,4,5
来吧,手绘解释,这样是不是非常的直观
这样你是不是已经理解了呢?点个赞呗。