当前位置: 首页 > news >正文

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`函数的工作原理和适用场景。记住关键点是:**水平堆叠会增加数组的列数(第二个维度)**,并且所有输入数组在除了第二个维度外的其他维度上必须具有相同的形状。

http://www.dtcms.com/a/511213.html

相关文章:

  • 020数据结构之优先队列——算法备赛
  • 华为OD-23届考研-测试面经
  • 阿里云网站建设步骤wordpress防止频繁搜索
  • 西宁网站建设哪家公司好东莞seo网站推广
  • 2025年AI IDE的深度评测与推荐:从单一功能效率转向生态壁垒
  • OSS存储的视频,安卓和PC端浏览器打开正常,苹果端打开不播放,什么原因?
  • Spark的shuffle类型与对比
  • 【 论文精读】VIDM:基于扩散模型的视频生成新范式
  • CentOS 7 安装指定内核版本与切换内核版本
  • Spring MVC 拦截器interceptor
  • 如何在 CentOS、Ubuntu 和 Debian 云服务器上安装 Python 3
  • 《金融电子化》:构建金融韧性运行安全体系:从灾备管理到主动防御新范式​​
  • spark组件-spark core(批处理)
  • 进行网站建设视频教程装修网站cms
  • 解决Kali虚拟机中VMnet1(仅主机模式)网卡无法获取IP地址的问题
  • Linux驱动开发笔记(十一)——阻塞和非阻塞IO
  • Docker----快速入门
  • 深度学习8-卷积神经网络-CNN概述-卷积层-池化层-深度卷积神经网络-案例:服装分类
  • 厦门做外贸网站国内十大咨询公司排名
  • 架构设计过去十年与未来十年
  • Nginx 日志轮转
  • 《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版副本集群》
  • 《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版分片集群》
  • MongoDB基础与Mongoose ODM
  • 做定制网站价格教做flash的网站
  • 【流量控制】算不对 GBN 窗口?分不清 SR 重传?滑动窗口 + 3 大协议一篇吃透
  • 临时插入的紧急任务如何影响整体进度
  • 国内net开发的网站建设网站建设费如何会计处理
  • Melos 使用指南:Flutter / Dart 多包管理工具!
  • React组件完全指南