如何使用numpy将第一个数组每个元素与第二个数组所有元素配对合并
Numpy 实现两个数组元素全配对的方法
你需要的结果本质是两个数组的笛卡尔积,可以用以下两种numpy方案实现:
方案1:使用numpy.meshgrid(兼容性好,通用度高)
代码示例:
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) A, B = np.meshgrid(a, b, indexing='ij') c = np.stack([A.ravel(), B.ravel()], axis=1)
输出的c即为目标数组:[[1 3],[1 4],[2 3],[2 4]]
参数说明:
indexing='ij'指定行优先的索引逻辑,保证按a的元素顺序依次配对b的所有元素ravel()将二维的网格数组摊平为一维stack(axis=1)将两个一维数组按列拼接,得到最终的配对二维数组
方案2:使用repeat+tile组合(写法更简洁)
代码示例:
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) c = np.stack([np.repeat(a, len(b)), np.tile(b, len(a))], axis=1)
逻辑说明:
np.repeat(a, len(b)):将a的每个元素重复len(b)次,得到[1,1,2,2]np.tile(b, len(a)):将整个b数组重复len(a)次,得到[3,4,3,4]- 两者按列拼接后直接得到目标配对数组
内容的提问来源于stack exchange,提问作者RobHam99
相关产品推荐
相关产品推荐

