np.mgrid使用
01 功能
np.mgrid
用与生成具有“空间结构”的等差三维数组,比如下面代码,生成维度为 (2, 5, 5)
。:
array3D = np.mgrid[-4: 0: 5j,
0: 4: 5j]
print(array3D.shape)
print(array3D)
(2, 5, 5)
[[[-4. -4. -4. -4. -4.]
[-3. -3. -3. -3. -3.]
[-2. -2. -2. -2. -2.]
[-1. -1. -1. -1. -1.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 1. 2. 3. 4.]
[ 0. 1. 2. 3. 4.]
[ 0. 1. 2. 3. 4.]
[ 0. 1. 2. 3. 4.]
[ 0. 1. 2. 3. 4.]]]
02 语法
语法格式如下:
np.mgrid[第1维,第2维,...]
dim = [start: end: step]
维度间用逗号分隔,第 i 维的写法存在两种情况:
a: b: c
c
表示生成的数组元素之间的步长;- 数组区间为
[a, b)
(左闭右开);
a: b: cj
cj
表示生成的数组元素的个数;- 数组区间为
[a, b]
(左闭又闭);
具体的用法,我们在后面实例部分讲解。
03 举例
-
一维数组
# 在[0, 4)区间内生成数组,间隔为1 -> [0, 1, 2, 3] array1D = np.mgrid[0: 4: 1] # 在[0, 4]区间内生成数组,个数为5 -> [0, 1, 2, 3, 4] array1Dj = np.mgrid[0: 4: 5j] print(array1D) print(array1Dj)
[0 1 2 3] [0. 1. 2. 3. 4.]
需要注意的是,当
c > b - a
时,其不会生成有效的数组,默认为0:array1D = np.mgrid[0: 4: 5] print(array1D)
[0]
-
两个二维数组
对于生成的高维数组,我们应该这样来看:
- 其会对数组沿其他维度进行复制拓展(x->y,y->x)
-
两个数组再堆叠起来
x,y = np.mgrid[-4: 0: 5j, 0: 4: 5j] print("x: \t", x.shape, "\n", x) print("y: \t", y.shape, "\n", y)
x: (5, 5) [[-4. -4. -4. -4. -4.] [-3. -3. -3. -3. -3.] [-2. -2. -2. -2. -2.] [-1. -1. -1. -1. -1.] [ 0. 0. 0. 0. 0.]] y: (5, 5) [[0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.] [0. 1. 2. 3. 4.]]
生成的数组将其进行拆分即两个
5 x 5
的矩阵,其沿令外一个维度的方向进行复制拓展。
04 用途
对于更高维的数组,我们结合它常见的应用三维绘图,具体的参考:<python笔记:np.mgrid
的用法>。
飞翔的荷兰人
邮箱:fly_cjb@163.com