numpy stack函数

numpy.stack函数用于将多个形状相同的数组在指定轴上进行叠加,生成新的多维数组。例如,将二维数组a、b、c在axis=0上叠加形成三维数组,或者在axis=1和axis=2上叠加。此外,该函数也可应用于三维数组,如将a、b、c在不同轴上叠加,改变数组的维度。此函数在处理多维数据时非常实用。

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

函数原型
numpy.stack(arrays, axis=0, out=None)
函数解释

将形状相同的数组在指定维度上进行叠加

函数用法

一个简单的二维数组的例子

>>> a = np.arange(9).reshape((3, 3))
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> b = np.arange(9, 18).reshape((3, 3))
>>> b
array([[ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])
>>> c = np.arange(18, 27).reshape((3, 3))
>>> c
array([[18, 19, 20],
       [21, 22, 23],
       [24, 25, 26]])
# 将a、b、c三个数组在轴axis=0上进行叠加,得到一个三维数组
>>> d = np.stack((a, b, c), axis=0)
>>> d
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])
# 将a、b、c三个数组在轴axis=1上进行叠加,同样得到一个三维数组
>>> e = np.stack((a, b, c), axis=1)
>>> e
array([[[ 0,  1,  2],
        [ 9, 10, 11],
        [18, 19, 20]],

       [[ 3,  4,  5],
        [12, 13, 14],
        [21, 22, 23]],

       [[ 6,  7,  8],
        [15, 16, 17],
        [24, 25, 26]]])
>>> f = np.stack((a, b, c), axis=2)
>>> f
array([[[ 0,  9, 18],
        [ 1, 10, 19],
        [ 2, 11, 20]],

       [[ 3, 12, 21],
        [ 4, 13, 22],
        [ 5, 14, 23]],

       [[ 6, 15, 24],
        [ 7, 16, 25],
        [ 8, 17, 26]]])

再来看一个三维数组的例子

>>> a = np.zeros((2, 2, 2), dtype=int)
>>> a
array([[[0, 0],
        [0, 0]],

       [[0, 0],
        [0, 0]]])
>>> b = np.ones((2, 2, 2), dtype=int)
>>> b
array([[[1, 1],
        [1, 1]],

       [[1, 1],
        [1, 1]]])
>>> c = np.full((2, 2, 2), 2, dtype=int)
>>> c
array([[[2, 2],
        [2, 2]],

       [[2, 2],
        [2, 2]]])
# 在轴axis=0上进行堆叠
>>> d = np.stack((a, b, c), axis=0)
>>> d
array([[[[0, 0],
         [0, 0]],

        [[0, 0],
         [0, 0]]],


       [[[1, 1],
         [1, 1]],

        [[1, 1],
         [1, 1]]],


       [[[2, 2],
         [2, 2]],

        [[2, 2],
         [2, 2]]]])
>>> d.shape
(3, 2, 2, 2)
>>> e = np.stack((a, b, c), axis=1)
>>> e
array([[[[0, 0],
         [0, 0]],

        [[1, 1],
         [1, 1]],

        [[2, 2],
         [2, 2]]],


       [[[0, 0],
         [0, 0]],

        [[1, 1],
         [1, 1]],

        [[2, 2],
         [2, 2]]]])
>>> e.shape
(2, 3, 2, 2)
# 在轴axis=2上进行堆叠
>>> f = np.stack((a, b, c), axis=2)
>>> f
array([[[[0, 0],
         [1, 1],
         [2, 2]],

        [[0, 0],
         [1, 1],
         [2, 2]]],


       [[[0, 0],
         [1, 1],
         [2, 2]],

        [[0, 0],
         [1, 1],
         [2, 2]]]])
>>> f.shape
(2, 2, 3, 2)
# 相当于g = np.stack((a, b, c), axis=-1)
>>> g = np.stack((a, b, c), axis=3)
>>> g
array([[[[0, 1, 2],
         [0, 1, 2]],

        [[0, 1, 2],
         [0, 1, 2]]],


       [[[0, 1, 2],
         [0, 1, 2]],

        [[0, 1, 2],
         [0, 1, 2]]]])
>>> g.shape
(2, 2, 2, 3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值