将两个numpy数组放入成对数组的数组中

时间:2017-11-08 15:54:15

标签: python arrays matrix pairwise

我想从两个不同长度的数组a和b创建一个成对数组矩阵:

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

b = np.array([4,5,6,7])

因此,c矩阵应如下所示:

[[1,4], [1,5], [1,6], ..., [3,7]]

4 个答案:

答案 0 :(得分:1)

c = [[i,j] for i in (a) for j in (b)]

答案 1 :(得分:0)

您可以使用np.meshgrid()

a = np.array((1, 2, 3))
b = np.array((4, 5, 6, 7))
out = np.stack([each.ravel(order='F') for each in np.meshgrid(a, b)])

out现在看起来像这样:

array([[1, 4],
   [1, 5],
   [1, 6],
   [1, 7],
   [2, 4],
   [2, 5],
   [2, 6],
   [2, 7],
   [3, 4],
   [3, 5],
   [3, 6],
   [3, 7]])

答案 2 :(得分:0)

您还可以使用product库中的itertoolsproduct(a, b)会在ab之间返回迭代器产品。使用vstack使其成为一个数组。

from itertools import product
np.vstack(product(a, b))

<强>输出

array([[1, 4], [1, 5], [1, 6], ...])

答案 3 :(得分:0)

您可以使用两个数组创建一个二维numpy数组,然后将组合数组的轴与np.swapaxes交换以获取所需的形状。

X = np.array([a, b])
swapped_array = X.swapaxes(1,0) 
# X.swapaxes(0,1) returns the same result