Nump.concatenate()函数整合问题

c=np.concatenate((a, b), axis=axis)
这个函数用于将多个数组进行连接,这与stack函数很容易混淆,他们之间的区别是concatenate会与当前要匹配的元素的维度保持不变。stack则会在两个基础上增加一个维度。举个例子:

axis=0
a = np.arange(8).reshape(2,2,2)
b = np.arange(8).reshape(2,2,2)
c=np.concatenate((a, b), axis=axis)#维度不变,在0轴下合并,a,b依旧是在第3位下的list,
d=np.stack((a, b), axis=axis)#维度增加成4维,a,b分别称为第4维下的一个list

print(c)
print(c.shape)
print(d)
print(d.shape)

输出C
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]

 [[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
C:(4, 2, 2)#axis=0,在第一个[ ]下增加了两组list变成4

d:
[[[[0 1]
   [2 3]]

  [[4 5]
   [6 7]]]#区别在这里增加维度


 [[[0 1]
   [2 3]]

  [[4 5]
   [6 7]]]]
(2, 2, 2, 2)
由此可推:

当axis=1时,c.shape为(2,4,2),整合后C维度不变,但是在第二维下合并增加为4个list,行数增加,d.shape为(2,2,2,2)

[[[0 1]
  [2 3]
  [0 1]
  [2 3]]

 [[4 5]
  [6 7]
  [4 5]
  [6 7]]]
(2, 4, 2)


当axis=2时,c.shape为(2,2,4)。整合后C维度不变,在第三维度最低维度合并,列数增加。d.shape为(2,2,2,2)
C:
[[[0 1 0 1]
  [2 3 2 3]]

 [[4 5 4 5]
  [6 7 6 7]]]
(2, 2, 4)


另外一个区别是,stark能够对最低维度的元素进行匹配,而concatenate是不行的,因为最低维度已经不能再降维了,因此这里stark的axis可以等于3,而concatenate不行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值