NumPy的hstack函数详细教程

 更新时间:2026年01月06日 10:56:59   作者:我爱派生  
np.hstack()是NumPy库中用于水平堆叠数组的函数,本文就来介绍一下NumPy的hstack函数的使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

`np.hstack()`是NumPy中用于水平(按列)堆叠数组的函数(这意味着它将数组在第二个轴(即列方向)上堆叠,但是要求除第二个轴外其他轴的大小必须相同。下面通过详细的解释和示例来学习这个函数。

1. 函数基本语法

numpy.hstack(tup)

参数:
- `tup`:包含要堆叠数组的序列(通常是元组或列表),所有数组必须具有相同的形状(除了第二个轴,即列方向)

返回值:
- 堆叠后的数组

2. 一维数组的堆叠

一维数组的水平堆叠会创建一个更长的一维数组:

import numpy as np

# 一维数组示例
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. 二维数组的堆叠

二维数组的水平堆叠会增加列数:

# 二维数组示例
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. 三维数组的堆叠

对于三维数组,`hstack`会在第二个维度(列)上堆叠:

# 三维数组示例
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. 形状要求:所有输入数组在除了第二个轴以外的所有轴上必须具有相同的形状
2. 错误示例
 

   # 这会报错,因为行数不同
   a = np.array([[1, 2], [3, 4]])
   b = np.array([[5, 6, 7]])  # 形状不匹配
   # result = np.hstack((a, b))  # ValueError

7. 与其他堆叠函数比较

- `vstack()`:垂直堆叠(按行)
- `dstack()`:深度堆叠(沿第三个轴)
- `concatenate()`:通用连接函数,可以指定轴```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. 实际应用示例

# 合并特征矩阵
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)

通过这个教程,你应该能够理解`hstack`函数的工作原理和适用场景。记住关键点是:**水平堆叠会增加数组的列数(第二个维度)**,并且所有输入数组在除了第二个维度外的其他维度上必须具有相同的形状。

到此这篇关于NumPy的hstack函数详细教程的文章就介绍到这了,更多相关NumPy hstack函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现查询某个目录下修改时间最新的文件示例

    Python实现查询某个目录下修改时间最新的文件示例

    这篇文章主要介绍了Python实现查询某个目录下修改时间最新的文件,涉及Python使用os与shutil模块针对文件的遍历、属性获取、读写等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • 对Python 检查文件名是否规范的实例详解

    对Python 检查文件名是否规范的实例详解

    今天小编就为大家分享一篇对Python 检查文件名是否规范的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 剖析Python的Twisted框架的核心特性

    剖析Python的Twisted框架的核心特性

    这篇文章主要介绍了剖析Python的Twisted框架的核心特性,包括Twisted框架中reacter与Deferred等的关键用法,需要的朋友可以参考下
    2016-05-05
  • Python中itertools模块的使用教程详解

    Python中itertools模块的使用教程详解

    itertools是python内置的模块,使用简单且功能强大。本文将详细为大家讲解一下itertools模块的使用方法,感兴趣的小伙伴可以学习一下
    2022-05-05
  • Python实现将多个空格换为一个空格.md的方法

    Python实现将多个空格换为一个空格.md的方法

    今天小编就为大家分享一篇Python实现将多个空格换为一个空格.md的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 使用Python实现对Excel文件加密与保护

    使用Python实现对Excel文件加密与保护

    在日常工作中,Excel 文件经常存储敏感信息,本文介绍如何利用 Spire.XLS for Python 对 Excel 文件进行加密与保护,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • Python安装OpenCV的示例代码

    Python安装OpenCV的示例代码

    这篇文章主要介绍了Python安装OpenCV的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python中文件的定义和使用操作示例

    python中文件的定义和使用操作示例

    Python中文件操作包括定义、打开、读取、写入和关闭,使用open()函数,指定文件路径和模式,常见模式有只读、写入、追加和二进制模式,文件操作完成后应关闭文件,推荐使用with语句,示例展示了文件的读写操作,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • TensorFlow变量管理详解

    TensorFlow变量管理详解

    这篇文章主要为大家详细介绍了TensorFlow变量管理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python利用FlashText算法实现替换字符串

    Python利用FlashText算法实现替换字符串

    FlashText算法是由 Vikash Singh 于2017年发表的大规模关键词替换算法,比正则表达式替换快M倍以上,这个M是需要替换的关键词数量,关键词越多,FlashText算法的优势就越明显。本文将详细这一算法,需要的可以参考一下
    2022-03-03

最新评论