我想从两个不同长度的数组a和b创建一个成对数组矩阵:
a = np.array([1,2,3])
b = np.array([4,5,6,7])
因此,c矩阵应如下所示:
[[1,4], [1,5], [1,6], ..., [3,7]]
答案 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
库中的itertools
。 product(a, b)
会在a
和b
之间返回迭代器产品。使用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