【python】详解使用numpy模块来拼接矩阵,二维矩阵和三维矩阵

首先,使用下面的代码,创建3个2×2的矩阵A、B、C。

import numpy as np
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
C = [[9, 9], [9, 9]]

在这里插入图片描述

二维矩阵->二维矩阵

在python中,进行矩阵拼接的语句为:

M = np.concatenate((m1, m2, m3), axis=k)

其中,m1、m2、m3为需要进行拼接的矩阵,axis表示为在哪一个维度进行拼接。
例如:

M = np.concatenate((A, B, C), axis=0)

这行语句表示将A、B、C三个矩阵在第0维(列方向)进行拼接,那么得到的M矩阵为:
在这里插入图片描述
如果使用的axis为1(行方向),即:

M = np.concatenate((A, B, C), axis=1)

那么得到的拼接矩阵如下:
在这里插入图片描述

二维矩阵->三维矩阵

从上面的演示可知,通过选择不同的axis值,可以使矩阵在不同的维度进行拼接,那么我如果想让A、B、C三个矩阵堆叠在一起,形成一个2×2×3的三维矩阵呢?
例如,希望得到如下矩阵:
在这里插入图片描述
显然直接改成axis=2是行不通的。

M = np.concatenate((A, B, C), axis=2)

因为会产生如下报错:

Traceback (most recent call last):
  File "D:\Anaconda\envs\py37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "<__array_function__ internals>", line 6, in concatenate
numpy.AxisError: axis 2 is out of bounds for array of dimension 2

Error中提示的很明显,这三个矩阵没有”2“这个维度,他们只有”0“和”1“两个维度
因此,需要进行维度拓展,将三个2×2的矩阵拓展为三个2×2×1的矩阵,这样他们便拥有了”2“这个维度,做法如下:

A = np.expand_dims(A,axis=2)
B = np.expand_dims(B,axis=2)
C = np.expand_dims(C,axis=2)

使用这三条语句,就会产生如下变化:
在这里插入图片描述
即A、B、C三个矩阵从2×2的维度,升维成了2×2×1的维度。
接下来再执行刚刚的那拼接矩阵语句:

M = np.concatenate((A, B, C), axis=2)

那么就会得到如下形式的矩阵:
在这里插入图片描述
矩阵M的维度变成了2×2×3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值