一、hstack簡介
hstack是NumPy中常用的一個函數,全稱是horizontal stack,它主要用於將多個數組按照水平方向(列方向)進行拼接,生成一個新的數組。
使用hstack之前需要保證所有要拼接的數組的行數必須一致,列數可以不同。
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])
c = np.hstack((a, b))
print(c)
運行結果:
[[ 1 2 3 10 11 12]
[ 4 5 6 13 14 15]
[ 7 8 9 16 17 18]]
二、hstack的使用場景
hstack主要應用於數據預處理,比如當我們需要將多個數據源的數據按照列進行拼接的時候,就可以使用hstack。
另外,當我們需要對多個列的數據進行某些操作時,也會使用到hstack。
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
z = np.array([7, 8, 9])
c = np.hstack((x.reshape(-1, 1), y.reshape(-1, 1), z.reshape(-1, 1)))
print(c)
運行結果:
[[1 4 7]
[2 5 8]
[3 6 9]]
上面的代碼中將三個數組按照列進行拼接,組成了一個新的二維數組。
三、hstack與vstack的區別
hstack與vstack的功能類似,不同的是hstack是將多個數組按照列進行拼接,而vstack是將多個數組按照行進行拼接。
因此,使用hstack時所有要拼接的數組的行數必須一致,而使用vstack時所有要拼接的數組的列數必須一致。
另外,可以使用concatenate函數來實現hstack和vstack的功能,它的第二個參數表示拼接的方向,0表示按照行方向(即vstack),1表示按照列方向(即hstack)。
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = np.array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])
c1 = np.concatenate((a, b), axis=0) # 等價於vstack
c2 = np.concatenate((a, b), axis=1) # 等價於hstack
print(c1)
print(c2)
運行結果:
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]
[13 14 15]
[16 17 18]]
[[ 1 2 3 10 11 12]
[ 4 5 6 13 14 15]
[ 7 8 9 16 17 18]]
四、hstack函數的注意事項
在使用hstack之前需要注意以下事項:
1、所有要拼接的數組的行數必須一致。
2、數組中的元素類型必須一致,否則會出現類型轉換錯誤。
3、如果數組中有缺失值,拼接後的數組中也會帶有缺失值。
4、盡量避免在Python的使用中使用多個維度組成的列表或者元組,這會影響性能。
五、總結
hstack是一個十分常用的NumPy函數,能夠將多個數組按照列方向進行拼接,生成一個新的數組。使用hstack需要注意一些事項,例如所有要拼接的數組的行數必須一致,數組中的元素類型必須一致,如果有缺失值,拼接後的數組中也會帶有缺失值等。
另外,hstack與vstack是兩個常用的拼接函數,除此之外,還有concatenate函數,能夠實現hstack和vstack的功能,需要特別注意其第二個參數表示拼接的方向。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/219831.html