我有两个数组,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.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, ...])
关于广播的更多信息:
关于python - numpy 中不同大小数组的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501073/