NumPy数组叠加操作详解:np.r_、np.c_、hstack与vstack用法

Elena
Elena
发布时间:2026-10-15 | 4人浏览过
原创

本文详解NumPy中数组叠加的多种实现方式,包括使用np.r_和np.c_进行行列堆叠,以及hstack和vstack函数的具体应用。重点解析一维数组在叠加时自动转为二维的机制,以及不同维度数组混合叠加时的行为差异,帮助开发者掌握高效的数组处理技巧。

前言

针对一维数组的存储特性,即形状为(n,)的数组在内部被视为列向量处理。

一、创建数组对象

可以通过np.arange()生成一维数组,或利用np.array()将多维列表转换为NumPy格式的ndarray对象。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用np.r_和np.c_进行数组相加

1.对一维数组的叠加

代码如下(示例):

import numpy as np
a = np.array([1,2,3])     
'''a = [1 
        2
        3]'''
b = a.repeat(3)
'''b = [1
        1   
        1
       ...
        3]'''
c = np.tile(a ,3)
print(b.shape)      #(9,) 列向量
print(c.shape)      #(9,) 列向量
d = np.r_[b,c]    #按列相加 还是列向量(只是numpy方便显示,为一行数组),还是一维
print('d:', d)
'''d: [1 1 1 2 2 2 3 3 3 1 2 3 1 2 3 1 2 3]'''
e = np.c_[b,c]   #按行相加 得到(9,2)的二维数组   
print('e:', e)
'''e: [[1 1]
       [1 2]
       [1 3]
       [2 1]
       [2 2]
       [2 3]
       [3 1]
       [3 2]
       [3 3]]'''

2.将数组转成二维

代码如下(示例):

a = np.array([1,2,3]).reshape(1,3)     #都初始为二维数组,就可以按照显示的行列堆叠
b = a.repeat(3).reshape(1,-1)
c = np.tile(a ,3)
print(b.shape)      #(1,9) 二维数组
print(c.shape)      #(1,9) 二维数组
#二维之后就可按照显示的行列顺序进行叠加了
d = np.r_[b,c]    #按列相加,得到(2,9)的二维数组
print('d:', d)    
'''d: [[1 1 1 2 2 2 3 3 3]
       [1 2 3 1 2 3 1 2 3]]'''
e = np.c_[b,c]   #按行相加 得到(1,18)的二维数组   
print('e:', e)
'''e: [[1 1 1 2 2 2 3 3 3 1 2 3 1 2 3 1 2 3]]'''

将数组转换为二维结构后,即可按照显示的行列顺序进行堆叠操作。

3. hstack以及vstack

a = np.array([1,2,3])
b = a.repeat(3)
c = np.tile(a ,3)
bc_h = np.hstack((b, c))    
print('bc_h:',bc_h)
'''bc_h: [1 1 1 2 2 2 3 3 3 1 2 3 1 2 3 1 2 3]'''
bc_v = np.vstack((b, c))    
print('bc_v:',bc_v)
'''bc_v: [[1 1 1 2 2 2 3 3 3]
          [1 2 3 1 2 3 1 2 3]]'''
d = np.arange(9).reshape(1,9)
# bcd_h = np.hstack((b, c, d))   #使用hstack,维度必须相同。不相同会报错
# print('bcd_h:',bcd_h)

bcd_v = np.vstack((b, c, d))    
print('bcd_v:',bcd_v)
'''bcd_v: [[1 1 1 2 2 2 3 3 3]
           [1 2 3 1 2 3 1 2 3]
           [0 1 2 3 4 5 6 7 8]]'''

在执行vstack叠加时,默认会将一维数组元素转换为二维结构。

然而,当二维与三维数组叠加时,二维数组不会自动变为三维。这意味着一维数组可以与二维数组进行vstack操作。

hstack不会改变数组维度,因此要求所有参与叠加的数组必须具有相同的维度。

到此这篇关于numpy数组叠加的实现示例的文章就介绍到这了,更多相关numpy数组叠加内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表