数组拼接操作
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()