📅  最后修改于: 2023-12-03 15:24:49.202000             🧑  作者: Mango
如果您使用NumPy,那么有许多不同的方法来构建两个数组的组合数组。这里我们介绍两个常用的方法。
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 函数。它接受任意数量的一维数组作为输入,并返回一个二维数组,其中每个输入数组都被作为一个列插入到新的二维数组中。
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
函数来生成组合的数组,最终结果都是相同的。这个就看个人选择哪种方法更方便了。