实现将形状 (a,d) + (b,d) 映射到 (a*b,d) 的添加操作

Achieving add operation that maps shapes (a,d) + (b,d) to (a*b,d)

我有一个形状为 (a,d) 的 numpy 数组和一个形状为 (b,d) 的数组。我想将第一个轴的所有可能组合加在一起,即我的最终数组的形状应该是 (a*b,d)。这可以使用以下代码实现:

import numpy as np

a = 2
b = 2
d = 3

matrix1 = np.random.rand(a,d)
matrix2 = np.random.rand(b,d)

result = np.zeros((a*b,d))

for i in range(a):
    result[i*b:i*b+b] = matrix1[i,:] + matrix2

但我想在没有 for 循环的情况下完成它,并且只使用 numpy 函数。是否有捷径可寻?也许使用 np.einsumnp.meshgrid?

给你,使用重复和平铺:

result = np.repeat(a,b.shape[0],axis=0) + np.tile(b,(a.shape[0],1))