两个数组之间的所有数字对
我想用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]]])