NumPy的hstack函數(shù)詳細(xì)教程
`np.hstack()`是NumPy中用于水平(按列)堆疊數(shù)組的函數(shù)(這意味著它將數(shù)組在第二個軸(即列方向)上堆疊,但是要求除第二個軸外其他軸的大小必須相同)。下面通過詳細(xì)的解釋和示例來學(xué)習(xí)這個函數(shù)。
1. 函數(shù)基本語法
numpy.hstack(tup)
參數(shù):
- `tup`:包含要堆疊數(shù)組的序列(通常是元組或列表),所有數(shù)組必須具有相同的形狀(除了第二個軸,即列方向)
返回值:
- 堆疊后的數(shù)組
2. 一維數(shù)組的堆疊
一維數(shù)組的水平堆疊會創(chuàng)建一個更長的一維數(shù)組:
import numpy as np
# 一維數(shù)組示例
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("a:", a)
print("b:", b)
print("a.shape:", a.shape)
print("b.shape:", b.shape)
result = np.hstack((a, b))
print("hstack result:", result)
print("result.shape:", result.shape)輸出:
a: [1 2 3]
b: [4 5 6]
a.shape: (3,)
b.shape: (3,)
hstack result: [1 2 3 4 5 6]
result.shape: (6,)
3. 二維數(shù)組的堆疊
二維數(shù)組的水平堆疊會增加列數(shù):
# 二維數(shù)組示例
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print("a:")
print(a)
print("b:")
print(b)
print("a.shape:", a.shape)
print("b.shape:", b.shape)
result = np.hstack((a, b))
print("hstack result:")
print(result)
print("result.shape:", result.shape)輸出:
a:
[[1 2]
[3 4]]
b:
[[5 6]
[7 8]]
a.shape: (2, 2)
b.shape: (2, 2)
hstack result:
[[1 2 5 6]
[3 4 7 8]]
result.shape: (2, 4)
4. 三維數(shù)組的堆疊
對于三維數(shù)組,`hstack`會在第二個維度(列)上堆疊:
# 三維數(shù)組示例
a = np.random.randn(2, 3, 4)
b = np.random.randn(2, 2, 4)
print("a.shape:", a.shape)
print("b.shape:", b.shape)
result = np.hstack((a, b))
print("result.shape:", result.shape)輸出:
a.shape: (2, 3, 4)
b.shape: (2, 2, 4)
result.shape: (2, 5, 4)
5. 注意事項
1. 形狀要求:所有輸入數(shù)組在除了第二個軸以外的所有軸上必須具有相同的形狀
2. 錯誤示例:
# 這會報錯,因為行數(shù)不同 a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6, 7]]) # 形狀不匹配 # result = np.hstack((a, b)) # ValueError
7. 與其他堆疊函數(shù)比較
- `vstack()`:垂直堆疊(按行)
- `dstack()`:深度堆疊(沿第三個軸)
- `concatenate()`:通用連接函數(shù),可以指定軸```python
比較不同堆疊方法
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print("hstack (水平):")
print(np.hstack((a, b)))
print("vstack (垂直):")
print(np.vstack((a, b)))
print("dstack (深度):")
print(np.dstack((a, b)))輸出
hstack (水平):
[[1 2 5 6]
[3 4 7 8]]
vstack (垂直):
[[1 2]
[3 4]
[5 6]
[7 8]]
dstack (深度):
[[[1 5]
[2 6]][[3 7]
[4 8]]]
8. 實際應(yīng)用示例
# 合并特征矩陣
features1 = np.random.randn(100, 5) # 100個樣本,5個特征
features2 = np.random.randn(100, 3) # 100個樣本,3個特征
combined_features = np.hstack((features1, features2))
print("原始特征形狀:", features1.shape, features2.shape)
print("合并后特征形狀:", combined_features.shape)通過這個教程,你應(yīng)該能夠理解`hstack`函數(shù)的工作原理和適用場景。記住關(guān)鍵點是:**水平堆疊會增加數(shù)組的列數(shù)(第二個維度)**,并且所有輸入數(shù)組在除了第二個維度外的其他維度上必須具有相同的形狀。
到此這篇關(guān)于NumPy的hstack函數(shù)詳細(xì)教程的文章就介紹到這了,更多相關(guān)NumPy hstack函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Numpy中vstack()和hstack()的使用方式
- Numpy中np.vstack()?和?np.hstack()?的實現(xiàn)
- numpy中hstack vstack stack concatenate函數(shù)示例詳解
- numpy中數(shù)組拼接、數(shù)組合并方法總結(jié)(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)
- numpy中np.dstack()、np.hstack()、np.vstack()用法
- numpy數(shù)組做圖片拼接的實現(xiàn)(concatenate、vstack、hstack)
- Numpy中stack(),hstack(),vstack()函數(shù)用法介紹及實例
- Python numpy實現(xiàn)數(shù)組合并實例(vstack,hstack)
相關(guān)文章
Pytorch distributed 多卡并行載入模型操作
這篇文章主要介紹了Pytorch distributed 多卡并行載入模型操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Python 使用 docopt 解析json參數(shù)文件過程講解
這篇文章主要介紹了Python 使用 docopt 解析json參數(shù)文件過程講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Python實現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進(jìn)行匹配
這篇文章主要為大家詳細(xì)介紹了Python如何使用pandas庫和Brightway2庫實現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進(jìn)行匹配,需要的可以參考下2025-02-02
Python?通過colorama?設(shè)置控制臺、命令行輸出彩色文字
這篇文章主要介紹了Python?通過colorama?設(shè)置控制臺、命令行輸出彩色文字的相關(guān)資料,需要的朋友可以參考下2023-09-09
python實現(xiàn)列表中由數(shù)值查到索引的方法
今天小編就為大家分享一篇python實現(xiàn)列表中由數(shù)值查到索引的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python?xml.dom.pulldom實現(xiàn)高效處理大型XML文檔
xml.dom.pulldom模塊是一種高效的XML處理工具,適用于大型XML文檔的解析,本文就來介紹一下Python?xml.dom.pulldom實現(xiàn)高效處理大型XML文檔,感興趣的可以了解一下2025-11-11

