如何连接两个二维NumPy数组?


Python 是一种用途广泛且功能强大的编程语言,广泛应用于科学计算、数据分析和机器学习。NumPy 是 Python 在这些领域如此有用的关键库之一。NumPy 提供了强大的数组处理工具,这对于许多科学计算任务至关重要。在本文中,我们将探讨如何使用 Python 连接两个二维 NumPy 数组。

如果您曾经在 Python 中使用过数组,您就会知道它们对于存储和处理大量数据非常有用。但是,您可能需要将两个数组组合成一个更大的数组。这就是数组连接的用武之地。在本教程中,我们将向您展示如何使用两种不同的方法在 Python 中连接两个二维 NumPy 数组。让我们开始吧!

如何连接两个二维 NumPy 数组?

连接是将两个或多个字符串、数组或其他数据结构组合成单个实体的过程。它涉及将两个或多个字符串或数组的内容连接在一起以创建一个新的字符串或数组。

有多种方法可以连接两个二维 NumPy 数组。让我们逐一深入了解。

方法一:使用 np.concatenate()

np.concatenate() 函数将其第一个参数作为数组序列,该序列可以是元组、列表或任何包含要连接的数组的可迭代对象。我们还可以指定要沿其连接数组的轴,可以是 0(用于垂直连接)或 1(用于水平连接)。

示例

以下是如何使用 np.concatenate() 水平连接两个二维 NumPy 数组的示例

import numpy as np

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

# concatenate horizontally
arr3 = np.concatenate((arr1, arr2), axis=1)

# print the concatenated array
print(arr3)

输出

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

在上面的示例中,我们首先使用 np.array() 函数创建两个二维数组 arr1 和 arr2。然后,我们使用 np.concatenate() 水平地沿第二个轴 (axis=1) 连接这些数组。生成的连接数组 arr3 包含来自 arr1 和 arr2 的所有元素,这些元素按水平排列。请注意,我们指定了 axis=1 以水平连接数组,并且生成的连接数组的行数与输入数组相同。

示例

我们还可以通过指定 axis=0 来使用 np.concatenate() 垂直连接两个二维 NumPy 数组。这是一个示例

import numpy as np

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

# concatenate vertically
arr3 = np.concatenate((arr1, arr2), axis=0)

# print the concatenated array
print(arr3)

输出

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

在上面的代码示例中,我们再次使用 np.array() 函数创建了两个二维数组 arr1 和 arr2,然后使用 np.concatenate() 沿第一个轴 (axis=0) 垂直连接这些数组。生成的连接数组 arr3 包含来自 arr1 和 arr2 的所有元素,这些元素按垂直排列。请注意,我们指定了 axis=0 以垂直连接数组,并且生成的连接数组的列数与输入数组相同。

方法二:使用 np.vstack() 和 np.hstack()

除了 np.concatenate() 函数外,NumPy 还提供了另外两个可用于连接二维数组的函数:np.vstack() 和 np.hstack()。这些函数分别专门用于垂直和水平连接。

np.vstack():此函数可用于垂直堆叠两个二维数组。它将数组元组作为输入,并返回一个包含垂直堆叠的输入数组的新数组。生成的数组的形状为 (m+n, k),其中 m 和 n 是输入数组中的行数,k 是列数。

示例

这是一个使用 np.vstack() 方法连接两个二维数组的示例

import numpy as np

# Creating two 2-dimensional arrays
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# Stacking the two arrays vertically
result = np.vstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\nResult after vertical concatenation:")
print(result)

输出

Array 1:
[[1 2]
 [3 4]]

Array 2:
[[5 6]
 [7 8]]

Result after vertical concatenation:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

如您在上面看到的,生成的连接数组 result 的形状为 (4, 2),其中 array1 的元素首先出现,然后是 array2 的元素。np.vstack() 函数垂直堆叠数组,这意味着数组一个接一个地放置。

np.hstack():此函数可用于水平堆叠两个二维数组。它将数组元组作为输入,并返回一个包含水平堆叠的输入数组的新数组。生成的数组的形状为 (m, n+p),其中 m 是输入数组中的行数,n 和 p 分别是第一个和第二个数组中的列数。

示例

这是一个演示 np.hstack() 用法的示例

import numpy as np

# Creating two 2-dimensional arrays
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# Stacking the two arrays horizontally
result = np.hstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\nResult after horizontal concatenation:")
print(result)

输出

Array 1:
[[1 2]
 [3 4]]

Array 2:
[[5 6]
 [7 8]]

Result after horizontal concatenation:
[[1 2 5 6]
 [3 4 7 8]]

正如您在输出中观察到的那样,生成的连接数组也是一个形状为 (2, 4) 的二维 NumPy 数组。连接数组的前两列包含 'array1' 的元素,后两列包含 'array2' 的元素。

结论

在本文中,我们探讨了使用 Numpy 连接两个二维数组的两种方法——np.concatenate() 和 np.vstack()/np.hstack()。我们为每种方法提供了示例,演示了如何使用这些函数水平和垂直连接两个二维数组。这些方法对于在科学计算、数据分析和机器学习任务中组合数组和处理大量数据非常有用。

更新于: 2023年7月21日

1000+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告