numpy,stack()函数理解

本文介绍了numpy的stack()函数,通过代码示例解析了如何根据axis参数改变数组的堆叠方式,从而调整维度。在二维和三维的例子中,详细解释了axis为0、1、2时的堆叠效果,帮助读者深入理解该函数的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考另外一篇博客对这三个函数的详解,再加上自己的体会记录如下

1. stack()

(1)给出代码(二维的例子)

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

print("增加一维,新维度的下标为0")
c=np.stack(a,axis=0)
print(c)

print("增加一维,新维度的下标为1")
c=np.stack(a,axis=1)
print(c)

输出:
列表a如下:
[[1, 2, 3], [4, 5, 6]]
增加一维,新维度下标为0
[[1 2 3]
 [4 5 6]]
增加一维,新维度下标为1
[[1 4]
 [2 5]
 [3 6]]

(2)理解

参考的那篇博客上面是用套箱子的方法理解,但是我并没有完全看明白,不知道axis的参数对应的是哪个箱子。所以我自己理解了一下。stack()函数不是增加了维度,而是改变了数组的堆叠方法,进而改变维度。

我们可以将a的行看做0维度,列看做1维度。当axis=0时,对0维度进行改变,即按行进行堆叠。当axis=1时,对1维度进行改变,即按列进行堆叠。按照这个方法可以验证输出。

(3)给出代码(三维的例子)

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

print("增加一维,新维度的下标为0")
d=np.stack((a,b,c),axis=0)
print(d)

print("增加一维,新维度的下标为1")
d=np.stack((a,b,c),axis=1)
print(d)
print("增加一维,新维度的下标为2")
d=np.stack((a,b,c),axis=2)
print(d)

输出:
('a=', [[1, 2, 3], [4, 5, 6]])
('b=', [[1, 2, 3], [4, 5, 6]])
('c=', [[1, 2, 3], [4, 5, 6]])
增加一维,新维度的下标为0
[[[1 2 3]
  [4 5 6]]

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

 [[1 2 3]
  [4 5 6]]]
增加一维,新维度的下标为1
[[[1 2 3]
  [1 2 3]
  [1 2 3]]

 [[4 5 6]
  [4 5 6]
  [4 5 6]]]
增加一维,新维度的下标为2
[[[1 1 1]
  [2 2 2]
  [3 3 3]]

 [[4 4 4]
  [5 5 5]
  [6 6 6]]]

(4)理解:

如上面理解的一样,可以把元组(a,b,c)的行看做0维度,列看做1维度,每行的元素看做2维度。(注意元组(a,b,c)是在abc外再加一个括号)

当axis=0时,元组(a,b,c)的第0维是最外一层的中括号的下一层,即a元素,b元素和c元素,把他们堆叠在一起就是每个第一次的输出。

当axis=1时,元组(a,b,c)的第1维是a元素的行,b元素的行和c元素的行,即把a,b,c按行堆叠,堆叠完第一行再堆叠a,b,c的第二行。

当axis=2时,元组(a,b,c)的第2维是a元素的元素级别,b元素的元素级别,c元素的元素级别,即按元素的元素进行堆叠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值