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