Python學習筆記:np.ogrid、np.mgrid產生多維數組


np.ogridnp.mgrid 函數相似,都是返回一個多維的 meshgrid, 區別是 ogrid 返回開放式,mgrid 返回密集式數組。

而數組中的元素依據 arange 方法來產生。

  • 參數部分需要傳入一個列表,例如:[a, b, step] ( a 表示起點,b 表示終點,step 表示步長,步長參數缺省默認為1)

一、ogrid函數

np.ogrid 函數作為產生 numpy 數組與 arange 函數有點類似,不同的是:

  • arange 產生一維數組,ogrid 產生二維數組
  • arange 產生一個數組,ogrid 產生兩個數組
  • ogrid 產生的數組,第一個數組是縱向產生的,即數組第二維大小始終是1。第二個數組是橫向產生的,即數組的第一維大小始終是1。

1.整數步長

整數步長直接生成2個數組。

x, y = np.ogrid[0:10:1, 0:10:2] # 步長分別為1、2
print(x)
print(y)
'''
[[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]
 [8]
 [9]] (10, 1)
[[0 2 4 6 8]] (1, 5)
'''

2.復數步長

復數步長的設置是通過 j 進行設置的,如:5j,表示的是,用幾個數值來等分整個區間。

x, y = np.ogrid[0:10:6j, 0:10:4j]
print(x, np.shape(x))
print(y, np.shape(y))
'''
[[ 0.]
 [ 2.]
 [ 4.]
 [ 6.]
 [ 8.]
 [10.]] (6, 1)
[[ 0.          3.33333333  6.66666667 10.        ]] (1, 4)
'''

二、mgrid函數

np.mgrid 函數最終返回兩個數組,維度都是 n * m, 生成的第一個數組是依照列表中第一個元素生成,對列進行擴展重復;另外一個數組是根據列表中第二個元素生成,對行進行擴展重復。

np.mgrid[1:20:5, 0:8:1]
'''
array([[[ 1,  1,  1,  1,  1,  1,  1,  1],
        [ 6,  6,  6,  6,  6,  6,  6,  6],
        [11, 11, 11, 11, 11, 11, 11, 11],
        [16, 16, 16, 16, 16, 16, 16, 16]],

       [[ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 0,  1,  2,  3,  4,  5,  6,  7]]])
'''

應用對比

x, y = np.ogrid[:3, :4]
np.where(x < y, x, y+10)
'''
array([[10,  0,  0,  0],
       [10, 11,  1,  1],
       [10, 11, 12,  2]])
'''

參考鏈接:numpy的ogrid詳細介紹

參考鏈接:np.ogrid 用法


免責聲明!

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



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