Python numpy中不同大小阵列的乘积
我有两个数组,Python numpy中不同大小阵列的乘积,python,numpy,scientific-computing,Python,Numpy,Scientific Computing,我有两个数组,x=np.arange(3)=[0,1,2,3]和y=np.arange(4)=[0,1,2] 是否有一个numpy函数可以给出他们所有产品的表格?例如: x*y = [[0,0,0,0], [0,1,2,3], [0,2,4,6]] 这不是内积或标量积。这可以称为“张量积”或其他东西。对于外积,具体来说是np。外积: >>> x = np.arange(3) >>> y = np.arange(4) >>> np.outer
x=np.arange(3)=[0,1,2,3]
和y=np.arange(4)=[0,1,2]
是否有一个numpy函数可以给出他们所有产品的表格?例如:
x*y = [[0,0,0,0], [0,1,2,3], [0,2,4,6]]
这不是内积或标量积。这可以称为“张量积”或其他东西。对于外积,具体来说是
np。外积
:
>>> x = np.arange(3)
>>> y = np.arange(4)
>>> np.outer(x, y)
array([[0, 0, 0, 0],
[0, 1, 2, 3],
[0, 2, 4, 6]])
>>>
一般来说,您可以通过广播实现这一点:
>>> x = np.arange(3)
>>> y = np.arange(4)
>>> x[..., None] * y[None, ...]
array([[0, 0, 0, 0],
[0, 1, 2, 3],
[0, 2, 4, 6]])
>>>
要在所有对上应用具有两个参数的函数,可以将其定义为:
def f(x, y):
return x * y
然后,您可以按如下方式使用它:
>>> f(x[..., None], y[None, ...])
array([[0, 0, 0, 0],
[0, 1, 2, 3],
[0, 2, 4, 6]])
>>>
要在外部产品上应用带有一个参数的函数,请执行以下操作:
np.exp(np.outer(x, y))
或
更多有关广播的资料:
>>> x = np.arange(3)
>>> y = np.arange(4)
>>> x[..., None] * y[None, ...]
array([[0, 0, 0, 0],
[0, 1, 2, 3],
[0, 2, 4, 6]])
>>>
- 是否可以将
np.outer
推广到我得到的表[[f(a,b)表示x中的a]表示y中的b]
表示任意函数f(x,y)
?没有np.outer
numpy抱怨我将两个不同大小的矩阵相乘。事实上,我使用的是*
,它就像一个内部产品。最后我用了一些比较慢的方法来理解列表。你的评论很有效f(np.outer(x,y))
。在我的例子中,f=np.exp
。