📜  如何构建两个 NumPy 数组的所有组合的数组?(1)

📅  最后修改于: 2023-12-03 15:24:49.202000             🧑  作者: Mango

NumPy:如何构建两个数组的所有组合的数组

如果您使用NumPy,那么有许多不同的方法来构建两个数组的组合数组。这里我们介绍两个常用的方法。

方法一:使用meshgrid函数

meshgrid函数是一个常用的用于生产网格数据的函数。它接受两个一维数组作为输入参数,并返回两个二维数组 X 和 Y,其中 X 的每一行都是输入参数中的一维数组,而 Y 的每一列都是输入参数中的另一个一维数组。然后我们可以使用NumPy的concatenate函数将 X 和 Y 沿着指定的轴拼接起来,构造出所有组合的数组。

import numpy as np

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

X, Y = np.meshgrid(arr1, arr2)
comb_arr = np.concatenate([X.reshape(-1,1), Y.reshape(-1,1)], axis=1)
print(comb_arr)

输出结果:

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

在上面的代码中,我们首先导入NumPy,然后创建输入数组 arr1 和 arr2。接着,我们使用meshgrid函数生成所有组合的二维数组 X 和 Y。最后,我们使用NumPy的concatenate函数将 X 和 Y 沿着轴 1 拼接起来得到所有组合的一维数组。

方法二:使用 column_stack 函数

另一个常用的方法是使用 column_stack 函数。它接受任意数量的一维数组作为输入,并返回一个二维数组,其中每个输入数组都被作为一个列插入到新的二维数组中。

import numpy as np

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

comb_arr = np.column_stack((arr1, arr2))
print(comb_arr)

输出结果:

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

在上面的代码中,我们首先导入NumPy,然后创建输入数组 arr1 和 arr2。接着,我们使用 NumPy 的 column_stack 函数来将 arr1 和 arr2 并排组合成一个二维数组。注意,如果我们想要得到所有的组合,则需要保证 arr1 和 arr2 的长度相等。

无论你选用使用meshgrid函数或是column_stack函数来生成组合的数组,最终结果都是相同的。这个就看个人选择哪种方法更方便了。