Python numpy.stack()

Python numpy.stack()

NumPy是一个著名的Python库,用于处理数组。这个库的一个重要函数是 stack()。

重要知识:

  • stack()用于连接多个NumPy数组。与concatenate()不同,它是沿着一个新的轴线连接数组。它返回一个NumPy数组。
  • 要连接两个数组,它们必须具有相同的形状和尺寸。(例如,两个(2,3)-> 2行,3列)
  • stack() 创建一个新的数组,它比输入的数组多一个维度。如果我们将2个一维数组堆叠起来,结果数组将有2个维度。

语法: numpy.stack(arrays, axis=0, out=None)

参数:

  • arrays:输入数组的序列(要求)。
  • axis:沿着这个轴,在新的数组中,输入数组被堆叠起来。可能的值是0到(n-1)个正整数,用于n维输出阵列。例如,在一个结果二维数组的情况下,有2个可能的轴选项:0和1。轴=0意味着一维输入数组将被沿行堆叠。轴=1意味着一维输入数组将被沿列堆叠。我们将在后面看到详细的例子。-1表示最后一个维度。例如,对于二维数组,轴1和-1是一样的。(可选)
  • out:放置结果阵列的目的地。

例子#1:stack两个1D数组

import numpy as np
 
# input array
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
 
# Stacking 2 1-d arrays
c = np.stack((a, b),axis=0)
print(c)

输出 –

array([[1, 2, 3],
[4, 5, 6]])

注意,输出是一个二维阵列。它们是按行堆叠的。现在,让我们把轴改成1。

# stack 2 1-d arrays column-wise
np.stack((a,b),axis=1)

输出 –

array([[1, 4],
[2, 5],
[3, 6]])

这里,stack()接收2个一维数组,并将它们一个接一个地堆叠起来,就像它在新数组中逐列填充元素一样。

#stacking 2 arrays along -1 axis
np.stack((a,b),axis=-1)

输出 –

array([[1, 4],
[2, 5],
[3, 6]])

-1代表 “最后一维”。这里有两个轴是可能的。所以,-1和1是一样的。

例子#2:stack两个2D数组

# input arrays
x=np.array([[1,2,3],
            [4,5,6]])
 
y=np.array([[7,8,9],
            [10,11,12]])

1。在轴线=0的情况下进行堆叠

np.stack((x,y),axis=0)

输出 –

array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]]])

想象一下,如果它们被一个接一个地堆叠起来,组成一个三维阵列。

2 。在轴线=1的情况下进行堆叠

np.stack((x,y),axis=1)

输出 – 三维数组。第一维度有第一行。第二维有第二行。[逐行叠加] 。

array([[[ 1, 2, 3],
[ 7, 8, 9]],

[[ 4, 5, 6],
[10, 11, 12]]])

3 。以轴线=2的方式叠加

np.stack((x,y),axis=2)

输出 – 三维数组。第一维度有第一行。第二维有第二行。[逐列堆积]

array([[[ 1, 7],
[ 2, 8],
[ 3, 9]],

[[ 4, 10],
[ 5, 11],
[ 6, 12]]])

例子#2:stack两个以上的2D数组

1 。with axis=0):只是堆叠。

x=np.array([[1,2,3],
            [4,5,6]])
y=np.array([[7,8,9],
            [10,11,12]])
z=np.array([[13,14,15],
            [16,17,18]])
 
np.stack((x,y,z),axis=0)

输出 –

array([[[ 1, 2, 3],
[ 4, 5, 6]],

[[ 7, 8, 9],
[10, 11, 12]],

[[13, 14, 15],
[16, 17, 18]]])

2 。与轴 =1(行间叠加)。

np.stack((x,y,z),axis=1)

输出 –

array([[[ 1, 2, 3],
[ 7, 8, 9],
[13, 14, 15]],

[[ 4, 5, 6],
[10, 11, 12],
[16, 17, 18]]])

3 。(轴线=2(柱状堆积)。

np.stack((x,y,z),axis=2)

输出-

array([[[ 1, 7, 13],
[ 2, 8, 14],
[ 3, 9, 15]],

[[ 4, 10, 16],
[ 5, 11, 17],
[ 6, 12, 18]]])

例子#3:stack两个三维数组

1.轴=0.只是叠加

#2 input 3d arrays
 
m=np.array([[[1,2,3],
            [4,5,6],
            [7,8,9]],
 
            [[10,11,12],
            [13,14,15],
            [16,17,18]]])
 
n=np.array([[[51,52,53],
            [54,55,56],
            [57,58,59]],
 
            [[110,111,112],
            [113,114,115],
            [116,117,118]]])
 
# stacking
np.stack((m,n),axis=0)

输出 –

array([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],

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

[[[ 51, 52, 53],
[ 54, 55, 56],
[ 57, 58, 59]],

[[110, 111, 112],
[113, 114, 115],
[116, 117, 118]]]])

2 。axis=1

np.stack((m,n),axis=1)

输出 – 想象一下,如果结果数组将每个数组的第一个平面作为第一维,以此类推。

array([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],

[[ 51, 52, 53],
[ 54, 55, 56],
[ 57, 58, 59]]],

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

[[110, 111, 112],
[113, 114, 115],
[116, 117, 118]]]])

3。axis = 2

np.stack((m,n),axis=2)

输出 –

array([[[[ 1, 2, 3],
[ 51, 52, 53]],

[[ 4, 5, 6],
[ 54, 55, 56]],

[[ 7, 8, 9],
[ 57, 58, 59]]],

[[[ 10, 11, 12],
[110, 111, 112]],

[[ 13, 14, 15],
[113, 114, 115]],

[[ 16, 17, 18],
[116, 117, 118]]]])

4 。axis = 3

np.stack((m,n),axis=3)

输出 –

array([[[[ 1, 51],
[ 2, 52],
[ 3, 53]],

[[ 4, 54],
[ 5, 55],
[ 6, 56]],

[[ 7, 57],
[ 8, 58],
[ 9, 59]]],

[[[ 10, 110],
[ 11, 111],
[ 12, 112]],

[[ 13, 113],
[ 14, 114],
[ 15, 115]],

[[ 16, 116],
[ 17, 117],
[ 18, 118]]]])

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程