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
的用法>。