深入理解NumPy 的 np.column_stack的实现

 更新时间:2026年01月07日 09:53:46   作者:司徒轩宇  
本文主要介绍了NumPy 的 np.column_stack的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在使用 NumPy 进行数据处理时,我们经常会遇到把多个数组按照列(column)组合成一个矩阵的需求。最常见的场景包括:

  • 将多个特征列合并成一个训练数据矩阵
  • 合并 GT 与预测结果
  • 将多个 1D 数组拼成 2D 数组

很多人第一时间会想到 np.hstack,但其实 np.column_stack 才是真正为“列拼接”设计的函数,尤其对 1D 数组的处理更加符合直觉。

本文将从原理、差异、示例到图解,全面讲解 np.column_stack 的使用。

1.np.column_stack是什么?

np.column_stack 的作用是:
将多个数组以“列”的方式拼接成一个新的二维数组。
如果输入数组是 1D,会先转换为列向量再拼接。
函数签名非常简单:

numpy.column_stack(tup)
  • tup:一个序列(列表、元组均可),其中的每个元素是数组或可转为数组的对象。
  • 返回:一个二维数组。

2. 为什么要用 column_stack?

很多初学者会把 column_stack 和 hstack 混用,但它们的行为有显著不同:

函数输入 1D 数组时输入 2D 数组时用途
column_stack自动转成列向量,并按列组合按列组合(与 hstack 等价)组合特征列、更自然的列拼接
hstack直接水平拼接成一行按列组合更接近简单拼接

简而言之:

👉 如果你把 1D 数组当成“数据列(column)”,应该用 column_stack

3. 示例:从最基础到更实用

3.1 堆叠两个 1D 数组

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

result = np.column_stack((a, b))
print(result)

输出:

[[1 4]
 [2 5]
 [3 6]]

解释:

  • a 和 b 是 (3,) 的 1D 数组
  • column_stack 会自动变成 (3,1) 列向量
  • 按列合并得到 (3,2) 矩阵

这恰好符合我们对“合并两个特征列”的直觉。

3.2 堆叠两个 2D 数组

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

result = np.column_stack((a, b))
print(result)

输出:

[[1 2 5 6]
 [3 4 7 8]]

二维数组时,column_stackhstack 表现相同——横向拼接。

3.3 混合 1D 和 2D 数组

a = np.array([1, 2, 3])
b = np.array([[4], [5], [6]])

result = np.column_stack((a, b))
print(result)

输出:

[[1 4]
 [2 5]
 [3 6]]

1D 会自动转换为列向量,非常方便。

4.column_stack的可视化理解

下面是一个更直观的图示,有助于你彻底理解 column_stack 的工作原理:

1D → 列向量 → 按列组合

图中左侧是两个 1D 数组,它们被转换成两列,再拼成一个 2D 数组。

这个可视化呈现出了 column_stack 的核心:
👉 把每个输入都当成“一列”,然后拼接。

5. column_stack 的典型使用场景

5.1 拼接多个特征列(ML/数据分析常用)

age = np.array([18, 25, 32])
height = np.array([170, 180, 165])

X = np.column_stack((age, height))

即:

[[ 18 170]
 [ 25 180]
 [ 32 165]]

这就是典型的 特征矩阵 X。

5.2 合并 ground truth + 预测结果

gt = np.array([1, 0, 1])
pred = np.array([1, 1, 0])

np.column_stack((gt, pred))

5.3 将多个独立数组快速构建成一张表

name = ["a", "b", "c"]
score = [90, 80, 95]

table = np.column_stack((name, score))

6. 与其他堆叠函数的对比总结

函数按列还是按行?对 1D 数组的处理最适合用途
column_stack按列自动变“列”构建数据矩阵、特征拼接
hstack按行水平拼接直接拼成一维简单拼接
vstack按行堆叠变为行向量竖向堆数据
stack增加新维度完全自定义 axis自由组合三维/四维结构

建议记忆:

column_stack = feature_columns 的组合工具

对于机器学习、图像关键点、GT+pred 数据结构来说特别适用。

到此这篇关于深入理解NumPy 的 np.column_stack的实现的文章就介绍到这了,更多相关NumPy np.column_stack内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python脚本后台运行的五种方式

    Python脚本后台运行的五种方式

    最近需要在后台运行脚本,本文主要介绍了Python脚本后台运行的五种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 详解Python中的文件操作

    详解Python中的文件操作

    今天这篇文章给大家介绍Python中的文件操作,文章内容介绍的很详细,有需要的可以参考借鉴。
    2016-08-08
  • Python装饰器原理与用法分析

    Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-04-04
  • pycharm使用anaconda全过程

    pycharm使用anaconda全过程

    这篇文章主要介绍了pycharm使用anaconda全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • centos6.4下python3.6.1安装教程

    centos6.4下python3.6.1安装教程

    这篇文章主要为大家详细介绍了centos6.4下python3.6.1的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 在Python中绘制带有连接线的双饼图(操作代码)

    在Python中绘制带有连接线的双饼图(操作代码)

    这篇文章主要介绍了如何在Python中绘制带有连接线的双饼图,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 使用Django实现把两个模型类的数据聚合在一起

    使用Django实现把两个模型类的数据聚合在一起

    这篇文章主要介绍了使用Django实现把两个模型类的数据聚合在一起,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python实现KNN邻近算法

    Python实现KNN邻近算法

    这篇文章主要为大家详细介绍了Python实现KNN邻近算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Python实现冒泡排序算法的完整实例

    Python实现冒泡排序算法的完整实例

    这篇文章主要给大家介绍了关于Python实现冒泡排序算法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 解决pycharm无法调用pip安装的包问题

    解决pycharm无法调用pip安装的包问题

    今天小编就为大家分享一篇解决pycharm无法调用pip安装的包问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论