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 舉例

  1. 一維數組

    # 在[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]
    
  2. 兩個二維數組

    對於生成的高維數組,我們應該這樣來看:

    • 其會對數組沿其他維度進行復制拓展(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的用法>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM