两个数组之间的所有数字对

2 投票
2 回答
728 浏览
提问于 2025-04-28 02:38

我想用numpy来获取两个数组之间的所有数字对,但一直没成功。简单来说,我需要的是一种外积的方式,不过这里的数字不是相乘,而是放在一个数组里,也就是说:

a = np.array([1, 2])
b = np.array([3, 4])

np.Func(a, b)
>>> [[[1,3], [1,4]]
     [[2,3], [2,4]]]

我试过用 np.meshgrid(a,b),但是输出的结果和我预期的完全不一样。

暂无标签

2 个回答

2

你需要在使用np.meshgrid之后,使用np.dstack

>>> a, b = np.array([1, 2]), np.array([3, 4])
>>> xs, ys = np.meshgrid(a, b)
>>> np.dstack([xs, ys])
array([[[1, 3],
        [2, 3]],

       [[1, 4],
        [2, 4]]])

如果你想要和问题中展示的顺序一样,可以使用np.transpose

>>> np.dstack([xs, ys]).transpose((1, 0, 2))
array([[[1, 3],
        [1, 4]],

       [[2, 3],
        [2, 4]]])
3

你也可以对这个网格数据使用一下transpose操作:

>>> np.transpose(np.meshgrid(a, b))
array([[[1, 3],
        [1, 4]],

       [[2, 3],
        [2, 4]]])

撰写回答