NumPy - 数组堆叠



NumPy 数组堆叠

NumPy 中的数组堆叠是指沿新维度组合多个数组,从而创建更高维度的数组。这与连接不同,连接是在现有轴上组合数组,不会添加新的维度。

NumPy 提供了几个函数来实现堆叠。它们如下所示:

  • 使用 numpy.stack() 函数
  • 使用 numpy.vstack() 函数
  • 使用 numpy.hstack() 函数
  • 使用 numpy.dstack() 函数
  • 使用 numpy.column_stack() 函数

使用 stack() 函数堆叠数组

我们可以使用 NumPy 中的 stack() 函数沿新轴堆叠一系列数组,在结果中创建一个新维度。

与沿现有轴组合数组的 numpy.concatenate() 函数不同,numpy.stack() 函数在指定位置向被堆叠的数组添加一个新轴。

以下是 NumPy 中 stack() 函数的语法:

np.stack(arrays, axis=0)

其中:

  • arrays − 要堆叠的数组序列。

  • axis − 堆叠数组的轴。默认值为 0,这会在最前面添加一个新轴。

示例:堆叠一维数组

在下面的示例中,我们使用 numpy.stack() 函数沿新轴 (axis 0) 堆叠三个一维数组,得到一个二维数组:

import numpy as np

# arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])

# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2, arr3), axis=0)
print("Stacked Array along a new axis (Axis 0):")
print(stacked_arr)

获得的输出如下:

Stacked Array along a new axis (Axis 0):
[[1 2 3]
 [4 5 6]
 [7 8 9]]

示例:更改轴

numpy.stack() 函数中的“axis”参数决定了新轴的插入位置。通过更改 axis 的值,可以控制数组的堆叠方式:

import numpy as np

# arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])

# Stack arrays along axis 1
stacked_arr = np.stack((arr1, arr2, arr3), axis=1)
print("Stacked Array along Axis 1:")
print(stacked_arr)

这将产生以下结果:

Stacked Array along Axis 1:
[[1 4 7]
 [2 5 8]
 [3 6 9]]

示例:堆叠多维数组

numpy.stack() 函数也可以用于堆叠多维数组。该函数向高维数组添加一个新轴,并相应地堆叠它们。

在这里,我们堆叠两个二维数组:

import numpy as np

# 2D arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2), axis=0)
print("Stacked 2D Arrays along a new axis (Axis 0):")
print(stacked_arr)

以上代码的输出如下:

Stacked 2D Arrays along a new axis (Axis 0):
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

使用 column_stack() 函数堆叠数组

NumPy 中的 numpy.column_stack() 函数用于将一维数组作为列堆叠到二维数组中,或者将二维数组按列堆叠。此函数提供了一种沿第二个轴 (axis=1) 组合数组的方法,有效地增加了结果数组中的列数。

以下是语法:

np.column_stack(tup)

其中,tup 是要堆叠的数组元组。数组可以是一维或二维的,但必须具有相同的行数。

示例:将一维数组作为列堆叠

在下面的示例中,我们使用 NumPy column_stack() 函数将两个一维数组作为列堆叠到二维数组中:

import numpy as np

# 1D arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# Column-stack 1D arrays
stacked_arr_1d = np.column_stack((arr1, arr2))

print("Stacked 1D arrays as 2D array:")
print(stacked_arr_1d)

我们得到如下所示的输出:

Stacked 1D arrays as 2D array:
[[1 4]
 [2 5]
 [3 6]]

示例:按列堆叠二维数组

在这里,我们使用 NumPy column_stack() 函数按列堆叠两个二维数组:

import numpy as np
# 2D arrays
arr3 = np.array([[1, 2],
                 [3, 4]])
arr4 = np.array([[5, 6],
                 [7, 8]])

# Column-stack 2D arrays
stacked_arr_2d = np.column_stack((arr3, arr4))

print("Stacked 2D arrays column-wise:")
print(stacked_arr_2d)

获得的输出如下:

Stacked 2D arrays column-wise:
[[1 2 5 6]
 [3 4 7 8]]

垂直堆叠

我们还可以使用 NumPy 中的 vstack() 函数垂直(按行)堆叠数组。它等同于使用 numpy.concatenate() 函数和 "axis=0",其中数组沿第一个轴连接。

这将产生一个行数增加的数组,将多个数组按行组合。以下是语法:

numpy.vstack(tup)

其中,tup 是要垂直堆叠的数组元组。所有数组必须具有相同的列数。

示例

在下面的示例中,我们使用 NumPy vstack() 函数垂直堆叠两个数组:

import numpy as np

# arrays
arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])

arr2 = np.array([[7, 8, 9],
                 [10, 11, 12]])

# Stack arrays vertically
stacked_arr = np.vstack((arr1, arr2))

print("Vertically Stacked Array:")
print(stacked_arr)

获得的输出如下:

Vertically Stacked Array:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

水平堆叠

我们可以使用 NumPy 中的 hstack() 函数水平(按列)堆叠数组。它等同于使用 numpy.concatenate() 函数和 "axis=1",其中二维数组沿第二个轴连接。

这将产生一个列数增加的数组,将多个数组按列组合。以下是语法:

numpy.hstack(tup)

其中,tup 是要水平堆叠的数组元组。所有数组必须具有相同的行数。

示例

在下面的示例中,我们使用 NumPy hstack() 函数水平堆叠两个数组:

import numpy as np

# arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays horizontally
stacked_arr = np.hstack((arr1, arr2))

print("Horizontally Stacked Array:")
print(stacked_arr)

执行上述代码后,我们得到以下输出:

Horizontally Stacked Array:
[[1 2 5 6]
 [3 4 7 8]]

深度堆叠

numpy.dstack() 函数用于沿第三维度(也称为深度维度)堆叠数组。这将按深度组合数组,有效地在结果数组中创建一个新维度。

当您想要将多个二维数组组合成单个三维数组时,它特别有用。以下是语法:

np.dstack(tup)

其中,tup 是要沿第三维度堆叠的数组元组。所有数组的前两个维度必须具有相同的形状。

示例

在这个例子中,我们使用 NumPy dstack() 函数沿第三维度堆叠两个数组:

import numpy as np

# arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays along the third dimension
stacked_arr = np.dstack((arr1, arr2))

print("Depth-wise Stacked Array:")
print(stacked_arr)

产生的结果如下:

Depth-wise Stacked Array:
[[[1 5]
  [2 6]]

 [[3 7]
  [4 8]]]
广告
© . All rights reserved.