numpy数组拼接np.stack(),np.hstack(),np.vstack()函数和np.c_[],np.r_[]

数组拼接操作

1、stack(数组序列,指定的轴):在指定位置上拼接数组。(第一个参数序列为元组)

import numpy as np
a=np.array([[[1,2],
             [9,10]],
            [[3,4],
             [11,12]]])
b=np.array([[[5,6],
             [13,14]],
            [[7,8],
             [15,16]]])
np.stack((a,b),0)
np.stack((a,b),1)
np.stack((a,b),2)

axis等于1时,可以这么想:
将序列a,b都去掉一个中括号,里面的元素各自对应拼接。
此时a,b各有两个元素

a=[[1,2],
   [9,10]],
  [[3,4],
   [11,12]]
b=[[5,6],
    [13,14]],
    [[7,8],
     [15,16]]

在这个维度层次上,序列a的第一个元素和序列b的第一个元素重新组合。
即重新拼接后的第一个元素

[[[ 1,  2],
 [ 9, 10]],
 [[ 5,  6],
  [13, 14]]]

拼接后的第二个元素

[[[ 3,  4],
   [11, 12]],
   [[ 7,  8],
    [15, 16]]]

再次拼接成一个数组 即

[[[[ 1,  2],
   [ 9, 10]],
   [[ 5,  6],
    [13, 14]]],
  [[[ 3,  4],
    [11, 12]],
    [[ 7,  8],
     [15, 16]]]]

同理,axis等于0就是去掉0个括号,等于2就是去掉最外层两个括号(注意是去掉元素的)

2、np.hstack()水平堆叠;np.vstack()垂直堆叠

import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
h=np.hstack((a,b))#水平堆叠
v=np.vstack((a,b))#垂直堆叠
print(h)
print(v)

#h:
[[1 2 5 6]
[3 4 7 8]]

#v:
[[1 2]
[3 4]
[5 6]
[7 8]]
3、np.r_[]、np.c_[]

import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[5,6],[7,8]])
print(np.r_[a,b])
print(np.c_[a,b])

结果为:
[[1, 2],
[3, 4],
[5, 6],
[7, 8]]

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

注意,np.c_[]并不是方法(因为是中括号呀),可以看成是np.hstack()的一个实例。
实际上,np.r_[a,b]=np.c_['1',a,b]=np.vstack()np.c_[a,b]=np.r_['1',a,b]=np.hstack()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值