numpy数组合并和矩阵拼接的实现

作者:小白不白嘿嘿嘿 时间:2022-09-05 19:39:54 

Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等类和函数用于数组拼接的操作。

各种函数的特点和区别如下标:

concatenate提供了axis参数,用于指定拼接方向
append默认先ravel再拼接成一维数组,也可指定axis
stack提供了axis参数,用于生成新的维度
hstack水平拼接,沿着行的方向,对列进行拼接
vstack垂直拼接,沿着列的方向,对行进行拼接
dstack沿着第三个轴(深度方向)进行拼接
column_stack水平拼接,沿着行的方向,对列进行拼接
row_stack垂直拼接,沿着列的方向,对行进行拼接
r_垂直拼接,沿着列的方向,对行进行拼接
c_水平拼接,沿着行的方向,对列进行拼接

直接合并

将两个一维数组合并成一个二维数组:


import torch
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0,15,0.1)
b = 1.088 * a + 0.638 + np.random.rand() * 10

print(a.shape,b.shape)
points = np.array([a,b])
print(points.shape)

(150,) (150,)
(2, 150)

append拼接


append(arr, values, axis=None)

arr待合并的数组的复制(特别主页是复制,所以要多耗费很多内存)
values用来合并到上述数组复制的值。如果指定了下面的参数axis的话,则这些值必须和arr的shape一致(shape[axis]之外都相等),否则的话,则没有要求。
axis要合并的轴.


>>> import numpy as np
>>> ar1 = np.array([[1,2,3], [4,5,6]])
>>> ar2 = np.array([[7,8,9], [11,12,13]])

>>> np.append(ar1, ar2) # 先ravel扁平化再拼接,所以返回值为一个1维数组
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13])

>>> np.append(ar1, ar2, axis=0)  # 沿第一个轴拼接,这里为行的方向
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9],
 [11, 12, 13]])

>>> np.append(ar1, ar2, axis=1)  # 沿第二个轴拼接,这里为列的方向
array([[ 1, 2, 3, 7, 8, 9],
 [ 4, 5, 6, 11, 12, 13]])

concatenate拼接


concatenate(a_tuple, axis=0, out=None)

a_tuple:对需要合并的数组用元组的形式给出
axis待合并的轴,默认为0


>>> import numpy as np
>>> ar1 = np.array([[1,2,3], [4,5,6]])
>>> ar2 = np.array([[7,8,9], [11,12,13]])
>>> ar1
array([[1, 2, 3],
 [4, 5, 6]])
>>> ar2
array([[ 7, 8, 9],
 [11, 12, 13]])

>>> np.concatenate((ar1, ar2)) # 这里的第一轴(axis 0)是行方向
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9],
 [11, 12, 13]])

>>> np.concatenate((ar1, ar2),axis=1) # 这里沿第二个轴,即列方向进行拼接
array([[ 1, 2, 3, 7, 8, 9],
 [ 4, 5, 6, 11, 12, 13]])

>>> ar3 = np.array([[14,15,16]]) # shape为(1,3)的2维数组
>>> np.concatenate((ar1, ar3)) # 一般进行concatenate操作的array的shape需要一致,当然如果array在拼接axis方向的size不一样,也可以完成
>>> np.concatenate((ar1, ar3)) # ar3虽然在axis0方向的长度不一致,但axis1方向上一致,所以沿axis0可以拼接
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [14, 15, 16]])
>>> np.concatenate((ar1, ar3), axis=1) # ar3和ar1在axis0方向的长度不一致,所以报错

hstack


>>> np.hstack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
 [ 4, 5, 6, 11, 12, 13]])

vstack


>>> np.vstack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9],
 [11, 12, 13]])

vstack


>>> np.dstack((ar1,ar2)) # 对于2维数组来说,沿着第三轴(深度方向)进行拼接, 效果相当于stack(axis=-1)
array([[[ 1, 7],
 [ 2, 8],
 [ 3, 9]],
 [[ 4, 11],
 [ 5, 12],
 [ 6, 13]]])

column_stack和row_stack


>>> np.column_stack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
 [ 4, 5, 6, 11, 12, 13]])

>>> np.row_stack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9],
 [11, 12, 13]])

np.r_ 和np.c_

常用于快速生成ndarray数据


>>> np.r_[ar1,ar2]  # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
 [ 4, 5, 6],
 [ 7, 8, 9],
 [11, 12, 13]])

>>> np.c_[ar1,ar2] # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
 [ 4, 5, 6, 11, 12, 13]])

来源:https://blog.csdn.net/weixin_45755332/article/details/112570897

标签:numpy,数组合并,矩阵拼接
0
投稿

猜你喜欢

  • PHP判断是否微信访问的方法示例

    2023-07-05 03:21:36
  • Python模块_PyLibTiff读取tif文件的实例

    2023-04-11 03:22:06
  • django session完成状态保持的方法

    2021-12-07 16:12:02
  • Python Pygame实战之飞机大战的实现

    2023-10-19 17:30:30
  • 解析:MySQL 数据库搜索中大小写敏感性

    2009-02-23 17:32:00
  • python实现图像降噪

    2022-03-09 06:36:38
  • JavaScript中的console.trace()函数介绍

    2024-05-21 10:13:33
  • python配置mssql连接的方法

    2021-05-12 08:03:28
  • 浅谈django 重载str 方法

    2022-12-17 18:40:33
  • 详解Django之auth模块(用户认证)

    2021-12-11 21:09:20
  • Python如何获取多线程返回结果

    2024-01-01 23:34:28
  • PyQt5实现数据的增删改查功能详解

    2021-03-30 06:50:07
  • python中requests爬去网页内容出现乱码问题解决方法介绍

    2023-09-14 01:00:11
  • 解决Python数据可视化中文部分显示方块问题

    2021-01-27 03:53:36
  • tensorflow学习笔记之简单的神经网络训练和测试

    2021-02-18 20:28:14
  • matplotlib之Font family [‘sans-serif‘] not found的问题解决

    2021-03-31 09:55:42
  • 在VScode中引用自定义模块问题

    2023-08-13 03:50:37
  • Python3导入自定义模块的三种方法详解

    2021-06-05 18:49:27
  • Vue+ECharts实现中国地图的绘制及各省份自动轮播高亮显示

    2024-04-27 16:12:40
  • 使用Python实现在Windows下安装Django

    2023-03-16 12:58:03
  • asp之家 网络编程 m.aspxhome.com