我有两个数组,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]]
这不是内部产品或标量产品。这可以称为“张量产品”或其他东西。
答案 0 :(得分:6)
对于外部产品,具体为np.outer
:
>>> 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))
或
np.exp(x[..., None] * y[None, ...])
有关广播的更多内容: