2

我想从两个不同长度的数组 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

4 回答 4

2
c = [[i,j] for i in (a) for j in (b)]
于 2017-11-08T18:55:10.683 回答
0

您也可以productitertools库中使用。将返回和product(a, b)之间的迭代器产品。使用使其成为一个数组。abvstack

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

输出

array([[1, 4], [1, 5], [1, 6], ...])
于 2017-11-08T20:56:49.197 回答
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]])
于 2017-11-08T17:56:57.177 回答
0

您可以使用两个数组创建一个 2D numpy 数组,然后将组合数组的轴与 np.swapaxes 交换以获得您想要的形状。

X = np.array([a, b])
swapped_array = X.swapaxes(1,0) 
# X.swapaxes(0,1) returns the same result
于 2020-11-25T15:00:41.543 回答