Nump.concatenate()函数整合问题

匿名 (未验证) 提交于 2019-12-03 00:21:02
c=np.concatenate((a, b), axis=axis)
这个函数用于将多个数组进行连接,这与stack函数很容易混淆,他们之间的区别是concatenate会把当前要匹配的元素降一维,即去掉最外面那一层括号。举个例子:

axis=0
a = np.arange(8).reshape(2,2,2)#前面2表示2维
b = np.arange(8).reshape(2,2,2)
c=np.concatenate((a, b), axis=axis)
d=np.stack((a, b), axis=axis)

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

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

 [[4 5]
  [6 7]]

 [[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
(4, 2, 2)#axis=0,扩展为4维
[[[[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维度不变,行数增加,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)

[[[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不行。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!