gpt4 book ai didi

python - 串联两个 numpy 数组的每一行组合

转载 作者:太空狗 更新时间:2023-10-30 02:08:41 25 4
gpt4 key购买 nike

给定两个不同形状的数组(A 和 B),我想生成一个数组,其中包含 A 的每一行与 B 的每一行的串联。

例如给出:

A = np.array([[1, 2],
[3, 4],
[5, 6]])

B = np.array([[7, 8, 9],
[10, 11, 12]])

想要生成数组:

[[1, 2, 7, 8, 9],
[1, 2, 10, 11, 12],
[3, 4, 7, 8, 9],
[3, 4, 10, 11, 12],
[5, 6, 7, 8, 9],
[5, 6, 10, 11, 12]]

我可以用迭代来做到这一点,但它非常慢,所以寻找一些 numpy 函数的组合,可以尽可能高效地重新创建上面的内容(输入数组 A 和 B 将达到10,000 行大小,因此希望避免嵌套循环)。

最佳答案

完美问题学习一下slicingbroadcasted-indexing .

这是使用这些工具的矢量化解决方案 -

def concatenate_per_row(A, B):
m1,n1 = A.shape
m2,n2 = B.shape

out = np.zeros((m1,m2,n1+n2),dtype=A.dtype)
out[:,:,:n1] = A[:,None,:]
out[:,:,n1:] = B
return out.reshape(m1*m2,-1)

sample 运行-

In [441]: A
Out[441]:
array([[1, 2],
[3, 4],
[5, 6]])

In [442]: B
Out[442]:
array([[ 7, 8, 9],
[10, 11, 12]])

In [443]: concatenate_per_row(A, B)
Out[443]:
array([[ 1, 2, 7, 8, 9],
[ 1, 2, 10, 11, 12],
[ 3, 4, 7, 8, 9],
[ 3, 4, 10, 11, 12],
[ 5, 6, 7, 8, 9],
[ 5, 6, 10, 11, 12]])

关于python - 串联两个 numpy 数组的每一行组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com