【python學習】numpy中的vstack、hstack、dstack三種堆疊函數的區別

numpy中的vstack、hstack、dstack三種堆疊函數的區別

先假設有以下的數據(用作示範三種函數返回的結果)

import numpy as np

data1 = [
[[11, 12, 13], [14, 15, 16], [17, 18, 19]],
[[21, 22, 23], [24, 25, 26], [27, 28, 29]],
[[31, 32, 33], [34, 35, 36], [37, 38, 39]]
]

data2 = [
[[41, 42, 43], [44, 45, 46], [47, 48, 49]],
[[51, 52, 53], [54, 55, 56], [57, 58, 59]],
[[61, 62, 63], [64, 65, 66], [67, 68, 69]]
]

arr1 = np.array(data1)
arr2 = np.array(data2)
# arr1.shape == [3, 3, 3]
# arr2.shape == [3, 3, 3]

vstack() 函數

vstack() 函數表示將數組在第一維上進行堆疊(即最外層的方括號),可將arr1和arr2第一維內的部分看作一個整體,即:

arr1 == [1], 
arr2 == [2]
vstack((arr1, arr2)) == [1 +2]

則使用vstack函數:

a = np.vstack((arr1, arr2))
print(a)
# 結果如下
[
[[11, 12, 13], [14, 15, 16], [17, 18, 19]],
[[21, 22, 23], [24, 25, 26], [27, 28, 29]],
[[31, 32, 33], [34, 35, 36], [37, 38, 39]],
[[41, 42, 43], [44, 45, 46], [47, 48, 49]],
[[51, 52, 53], [54, 55, 56], [57, 58, 59]],
[[61, 62, 63], [64, 65, 66], [67, 68, 69]]
]
# 此時 a.shape == [6, 3, 3]

hstack() 函數

hstack() 函數表示將數組在第二維進行堆疊(即第二層方括號),可將arr1和arr2中第二層括號裏面的內容看作一個整體,即

arr1 == [
[1],
[2],
[3]
]

arr2 == [
[4],
[5],
[6]
]

# 然後 hstack((arr1, arr2)) 的結果如下:
[
[1 +4],
[2 +5],
[3 +6]
]

使用hstack() 函數,得到:

b = np.hstack((arr1, arr2))
print(b)
# 結果如下:
[
[[11, 12, 13], [14, 15, 16], [17, 18, 19], [41, 42, 43], [44, 45, 46], [47, 48, 49]],
[[21, 22, 23], [24, 25, 26], [27, 28, 29], [51, 52, 53], [54, 55, 56], [57, 58, 59]],
[[31, 32, 33], [34, 35, 36], [37, 38, 39], [61, 62, 63], [64, 65, 66], [67, 68, 69]]
]
# 此時 b.shape == [3, 6, 3]

dstack() 函數

dstack() 函數表示將數組在第三維進行堆疊(即第三層方括號),可將arr1和arr2第三層括號裏面的內容看作一個整體,即:

arr1 = [
[[1], [2], [3]],
[[4], [5], [6]],
[[7], [8], [9]]
]

arr2 = [
[[11], [12], [13]],
[[14], [15], [16]],
[[17], [18], [19]]
]

# 然後 dstack((arr1, arr2)) 的結果如下:
[
[[1 +11],[2 +12],[3 +13]]
[[4 +14],[5 +15],[6 +16]]
[[7 +17],[8 +18],[9 +19]]
]

使用dstack() 函數,得到:


print(c)
# 結果如下:
[
[[11 12 13 41 42 43],[14 15 16 44 45 46],[17 18 19 47 48 49]]
[[21 22 23 51 52 53],[24 25 26 54 55 56],[27 28 29 57 58 59]]
[[31 32 33 61 62 63],[34 35 36 64 65 66],[37 38 39 67 68 69]]
]

# 此時 c.shape == [3, 3, 6]

以上內容參考鏈接文章👇
參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章