实现将形状 (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.einsum
或 np.meshgrid
?
给你,使用重复和平铺:
result = np.repeat(a,b.shape[0],axis=0) + np.tile(b,(a.shape[0],1))
我有一个形状为 (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.einsum
或 np.meshgrid
?
给你,使用重复和平铺:
result = np.repeat(a,b.shape[0],axis=0) + np.tile(b,(a.shape[0],1))