两个不同形状的numpy数组相乘时是否有自动广播的功能?
Is there a function for automatic broadcasting when multiplying two numpy arrays with different shapes?
我想将两个不同形状的 numpy 数组相乘。结果应该以这样的方式广播,例如形状为 (3,) 和 (5,) 的数组相乘 return 是形状为 (3,5) 的数组。我知道这可以使用 array1[:,numpy.newaxis]*array2[numpy.newaxis,:]。但我正在寻找的是更通用的东西,一个函数也自动将形状为 (3,5) 和 (4,) 的数组乘以形状为 (3,5,4) 的数组。是否有任何 numpy 函数可以执行此操作?当然,a 可以自己编写一个函数,但是是否存在任何函数?
所以我正在寻找一个函数 numpy.func(array1, array2) 来执行 return 一个具有形状 (*array1.shape, *array2.shape) 的数组 array3 和值 array3[i1,j1,..,i2,j2,..] = array1[i1,j1,...]*array2[i2,j2,...].
谢谢
看看numpy.multiply.outer
。 outer
是所有 "ufuncs" 都有的标准方法。
例如,
In [19]: a # a has shape (3, 4)
Out[19]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [20]: b # b has shape (5,)
Out[20]: array([0, 1, 2, 3, 4])
In [21]: c = np.multiply.outer(a, b)
In [22]: c.shape
Out[22]: (3, 4, 5)
In [23]: c[1, 2, 3]
Out[23]: 18
In [24]: a[1, 2]*b[3]
Out[24]: 18
我想将两个不同形状的 numpy 数组相乘。结果应该以这样的方式广播,例如形状为 (3,) 和 (5,) 的数组相乘 return 是形状为 (3,5) 的数组。我知道这可以使用 array1[:,numpy.newaxis]*array2[numpy.newaxis,:]。但我正在寻找的是更通用的东西,一个函数也自动将形状为 (3,5) 和 (4,) 的数组乘以形状为 (3,5,4) 的数组。是否有任何 numpy 函数可以执行此操作?当然,a 可以自己编写一个函数,但是是否存在任何函数?
所以我正在寻找一个函数 numpy.func(array1, array2) 来执行 return 一个具有形状 (*array1.shape, *array2.shape) 的数组 array3 和值 array3[i1,j1,..,i2,j2,..] = array1[i1,j1,...]*array2[i2,j2,...].
谢谢
看看numpy.multiply.outer
。 outer
是所有 "ufuncs" 都有的标准方法。
例如,
In [19]: a # a has shape (3, 4)
Out[19]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [20]: b # b has shape (5,)
Out[20]: array([0, 1, 2, 3, 4])
In [21]: c = np.multiply.outer(a, b)
In [22]: c.shape
Out[22]: (3, 4, 5)
In [23]: c[1, 2, 3]
Out[23]: 18
In [24]: a[1, 2]*b[3]
Out[24]: 18