这三个函数的功能都是堆叠数组。一下看三者的详细用法和区别之处。
1,stack()函数:
函数原型为:stack(arrays, axis=0)
arrays可以传数组和列表,arrays里面的每个元素必须形状是一样的,否则程序了会报错。
axis默认值为0,0是按行堆叠,1是按列堆叠(有矩阵转置的效果)。
可结合以下代码理解:
import numpy as np
a=[1,2,3]
b=[4,5,6]
c=[[1,2,3],[4,5,6]]
print("List a:n",a)
print("List b:n",b)
print("List c:n",c)
re=np.stack(c,axis=0)
print("c stack in rows:n",re)
re=np.stack(c,axis=1)
print("c stack in columns:n",re)
re=np.stack((a,b))
print("a and b are stack in rows:n",re)
re=np.stack((a,b),axis=1)
print("a and b are stack in columns:n",re)
输出结果:
List a:
[1, 2, 3]
List b:
[4, 5, 6]
List c:
[[1, 2, 3], [4, 5, 6]]
c stack in rows:
[[1 2 3]
[4 5 6]]
c stack in columns:
[[1 4]
[2 5]
[3 6]]
a and b are stack in rows:
[[1 2 3]
[4 5 6]]
a and b are stack in columns:
[[1 4]
[2 5]
[3 6]]
2,hstack函数()
函数原型hstack(tup)
tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。
hstack是把tup数组内最低维度的相同位置的元素按行顺序排列堆叠起来(同维度位置的为一行),返回的数组降了一个维度
可结合以下代码理解:
import numpy as np a=[[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] re=np.hstack(a) print(re) 结果: [1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4]
[1,2,3,4],[1,2,3,4].......最低维度的相同位置的元素
import numpy as np a=[[[1],[2],[3],[4]], [[1],[2],[3],[4]], [[1],[2],[3],[4]], [[1],[2],[3],[4]]] re=np.hstack(a) print(re) 结果: [[1 1 1 1] [2 2 2 2] [3 3 3 3] [4 4 4 4]]
[1],[1],[1],[1]为相同维度相同位置的元素.(原数组大于三维时,具有降维转置的效果)
3,vstack()函数
函数原型vstack(tup)。
参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。
vstack是把tup数组内每个元素按列顺序排列堆叠起来.
import numpy as np a=[[1],[2],[3]] b=[[1],[2],[3]] c=[[1],[2],[3]] d=[[1],[2],[3]] print(np.vstack((a,b,c,d))) 输出: [[1] [2] [3] [1] [2] [3] [1] [2] [3] [1] [2] [3]]
import numpy as np a=[[[[1,2],[2,2],[3,2],[1,4]], [[1,2],[2,2],[3,2],[1,4]], [[1,2],[2,2],[3,2],[1,4]], [[1,2],[2,2],[3,2],[1,4]]]] re=np.vstack(a) print(re) 结果: [[[1 2] [2 2] [3 2] [1 4]] [[1 2] [2 2] [3 2] [1 4]] [[1 2] [2 2] [3 2] [1 4]] [[1 2] [2 2] [3 2] [1 4]]]
如有不妥和改进之处欢迎私信指出。



