Python数据分析之堆叠数组函数示例总结.docx
第
Python数据分析之堆叠数组函数示例总结
目录numpy堆叠数组ravel()函数stack()函数vstack()函数hstack()函数concatenate()函数
numpy堆叠数组
在做图像和nlp的数组数据处理的时候,经常需要实现两个数组堆叠或者连接的功能,这就需用到numpy库的一些函数,numpy库中的常用堆叠数组函数如下:
stack:Joinasequenceofarraysalonganewaxis.hstack:Stackarraysinsequencehorizontally(columnwise).vstack:Stackarraysinsequencevertically(rowwise).dstack:Stackarraysinsequencedepthwise(alongthirdaxis).concatenate:Joinasequenceofarraysalonganexistingaxis.
ravel()函数
ravel()方法可让将多维数组展平成一维数组。如果不指定任何参数,ravel()将沿着行(第0维/轴)展平/拉平输入数组。
示例代码如下:
std_array=np.random.normal(3,2.5,size=(2,4))
array1d=std_array.ravel()
print(std_array)
print(array1d)
程序输出结果如下:
[[5222
[2912]
[52222912
stack()函数
stack()函数原型是stack(arrays,axis=0,out=None),功能是沿着给定轴连接数组序列,轴默认为第0维。
1,参数解析:
arrays:类似数组(数组、列表)的序列,这里的每个数组必须有相同的shape。axis:默认为整形数据,axis决定了沿着哪个维度stack输入数组。
2,返回:
stacked:ndarray类型。Thestackedarrayhasonemoredimensionthantheinputarrays.
实例如下:
importnumpyasnp
#一维数组进行stack
a1=np.array([1,3,4])#shape(3,)
b1=np.array([4,6,7])#shape(3,)
c1=np.stack((a,b))
print(c1)
print(c1.shape)#(2,3)
#二维数组进行堆叠
a2=np.array([[1,3,5],[5,6,9]])#shape(2,3)
b2=np.array([[1,3,5],[5,6,9]])#shape(2,3)
c2=np.stack((a2,b2),axis=0)
print(c2)
print(c2.shape)
输出为:
[[134][467]]
(2,3)
[[[135][569]][[135][569]]](2,2,3)
可以看到,进行stack的两个数组必须有相同的形状,同时,输出的结果的维度是比输入的数组都要多一维的。我们拿第一个例子来举例,两个含3个数的一维数组在第0维进行堆叠,其过程等价于先给两个数组增加一个第0维,变为1*3的数组,再在第0维进行concatenate()操作:
a=np.array([1,3,4])
b=np.array([4,6,7])
a=a[np.newaxis,:]
b=b[np.newaxis,:]
np.concatenate([a,b],axis=0)
输出为:
array([[1,2,3],[2,3,4]])
vstack()函数
vstack函数原型是vstack(tup),功能是垂直的(按照行顺序)堆叠