Python 中 stack,hstack,vstack详解

stack()函数

stack此时翻译成堆叠,也就是对数据进行堆叠,函数原型为:stack(arrays, axis=0),arrays可以传数组和列表。axis即在横轴(行)方向或者纵轴(列)方向对数据进行操作,具体含义在我的另一篇博客里面具体介绍了 axis的解释,链接如下:

https://blog.csdn.net/ding_programmer/article/details/102491181

import numpy as np
a=[[1,2,3],
   [4,5,6]]
print("列表a如下:")
print(a)

print("axis=0")
c=np.stack(a,axis=0)
print(c)

print("axis=1")
c=np.stack(a,axis=1)
print(c)

结果如下:

列表a如下:
[[1, 2, 3], [4, 5, 6]]
axis=0
[[1 2 3]
 [4 5 6]]
axis=1
[[1 4]
 [2 5]
 [3 6]]

使用 stack,可以将一个列表转换为一个numpy数组,当axis=0的时候,和 使用 np.array() 没有什么区别,但是当 axis=1的时候,那么就是对每一行进行在列方向上进行运算,也就是列方向结合,此时矩阵的维度也从(2,3)变成了(3,2)

再来看一个例子:

import numpy as np
a=[[1,2,3,4],
   [5,6,7,8],
   [9,10,11,12]]
print("列表a如下:")
print(a)

print("axis=0")
c=np.stack(a,axis=0)
print(c)

print("axis=1")
c=np.stack(a,axis=1)
print(c)

结果如下:

列表a如下:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
axis=0
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
axis=1
[[ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]
 [ 4  8 12]]

也算同样的道理,axis=1的时候你就记住每一行对列进行处理

 

hstack()函数

函数原型:hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。看下面的代码体会它的含义

import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.hstack((a,b)))

输出:[1 2 3 4 5 6 ] 

import numpy as np
a=[[1],[2],[3]]
b=[[4],[5],[6]]
print(np.hstack((a,b)))

输出:

 [[1 4]
 [2 5]
 [3 6]]

 

也就是按水平(按列的顺序)对数据进行堆叠 h就是 horizontal 水平方向上的意思,vstack正好相反

 

vstack()函数

函数原型:vstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。看下面的代码体会它的含义

import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.vstack((a,b)))

输出:

[[1 2 3]
 [4 5 6]]

import numpy as np
a=[[1],[2],[3]]
b=[[4],[5],[6]]
print(np.vstack((a,b)))

输出:

[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

它是垂直(按照行顺序)的把数组给堆叠起来 v就是 vertical 垂直方向的意思。

  • 15
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值