Numpy-矩阵的合并

import numpy as np

arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])

#矩阵的垂直合并
arr3 = np.vstack((arr1,arr2))
print(arr3)
[[1 2 3]
 [4 5 6]]

#矩阵的水平合并
arr4 = np.hstack((arr1,arr2))
print(arr4)
[1 2 3 4 5 6]

#3个矩阵的垂直合并
arrv = np.vstack((arr1,arr2,arr3))
print(arrv)
[[1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]]

#3个矩阵的水平合并
arrh = np.hstack((arr1,arr2,arr4))
print(arrh)
[1 2 3 4 5 6 1 2 3 4 5 6]

#合并的一般方式 默认是水平合并
arr = np.concatenate((arr1,arr2,arr1))
print(arr)
[1 2 3 4 5 6 1 2 3]

#axis = 0代表是纵向的合并,注意合并的array维度需要先相同,形状要匹配
arr = np.concatenate((arr3,arrv),axis = 0)
print(arr)
[[1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]]

#axis = 1代表是横向的合并,注意合并的array维度需要先相同,形状要匹配
arr = np.concatenate((arr3,arr3),axis = 1)
print(arr)
[[1 2 3 1 2 3]
 [4 5 6 4 5 6]]

#对1维的矩阵进行转置发现输出没有变化,说明一维的矩阵不能转置
print(arr1.T)
[1 2 3]

print(arr1.T.shape)
(3,)

#给1维的矩阵第一个维度上加一个维度,这时候就可以进行转置
arr1_1 = arr1[np.newaxis,:]
print(arr1_1)
[[1 2 3]]
print(arr1_1.shape)
(1, 3)
print(arr1_1.T)
[[1]
 [2]
 [3]]
 
#给1维的矩阵第二个维度上加一个维度
arr1_2 = arr1[:,np.newaxis]
print(arr1_2)
[[1]
 [2]
 [3]]
print(arr1_2.shape)#(3,1)
(3, 1)

#np.atleast_2d会判断矩阵是否是1维的矩阵,如果是的话将其转化为2维的矩阵,如果不是的话不做改变
#np.atleast2d:字面意思至少是两维
arr1_3 = np.atleast_2d(arr1)
print(arr1_3)
[[1 2 3]]
print(arr1_3.T)#(3,1)
[[1]
 [2]
 [3]]
arr1_4 = np.atleast_3d(arr1)
print(arr1_4)
[[[1]
  [2]
  [3]]]

#如果是超过2维的矩阵不做改变
arr_3d = np.random.random((3,2,3))
print(arr_3d)
[[[0.4324091  0.64994402 0.12787534]
  [0.6124248  0.90403621 0.19718013]]

 [[0.26517375 0.43147199 0.97764531]
  [0.17105938 0.96694364 0.7580243 ]]

 [[0.0946729  0.59033163 0.12797012]
  [0.17993213 0.41231472 0.2179005 ]]]
  
arr1_3 = np.atleast_2d(arr_3d)
print(arr1_3)
[[[0.4324091  0.64994402 0.12787534]
  [0.6124248  0.90403621 0.19718013]]

 [[0.26517375 0.43147199 0.97764531]
  [0.17105938 0.96694364 0.7580243 ]]

 [[0.0946729  0.59033163 0.12797012]
  [0.17993213 0.41231472 0.2179005 ]]]
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饿了就干饭

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值