如何计算 2 (1D) 向量之间的外和(不是乘积)
How to calculate the outer sum (not product) between 2 (1D) vectors
似乎 np.einsum 应该可以解决问题,但我没能成功。
一个例子:
a = np.arange(3)
b = np.arange(2)
#that computes the outer product
res = np.einsum('i,j->ij',a,b)
#The resulting array I am looking for is:
out = [[0, 1], [1, 2], [2, 3]]
#or its transpose.
我一直在搜索,所有函数似乎都指向外积,而不是外和。 for
循环就可以完成这项工作,但我想要比这更有效的方法。
有谁知道如何使用 np.einsum
或其他方法实现外加和?
外和:
res = np.add.outer(a, b)
In [610]: a = np.arange(3)
...: b = np.arange(2)
...:
In [611]: np.add.outer(a,b)
Out[611]:
array([[0, 1],
[1, 2],
[2, 3]])
给a
(3,1)增加一个维度,我们可以使用加法运算符。查找 broadcasting
了解详情。
In [612]: a[:,None]+b
Out[612]:
array([[0, 1],
[1, 2],
[2, 3]])
似乎 np.einsum 应该可以解决问题,但我没能成功。
一个例子:
a = np.arange(3)
b = np.arange(2)
#that computes the outer product
res = np.einsum('i,j->ij',a,b)
#The resulting array I am looking for is:
out = [[0, 1], [1, 2], [2, 3]]
#or its transpose.
我一直在搜索,所有函数似乎都指向外积,而不是外和。 for
循环就可以完成这项工作,但我想要比这更有效的方法。
有谁知道如何使用 np.einsum
或其他方法实现外加和?
外和:
res = np.add.outer(a, b)
In [610]: a = np.arange(3)
...: b = np.arange(2)
...:
In [611]: np.add.outer(a,b)
Out[611]:
array([[0, 1],
[1, 2],
[2, 3]])
给a
(3,1)增加一个维度,我们可以使用加法运算符。查找 broadcasting
了解详情。
In [612]: a[:,None]+b
Out[612]:
array([[0, 1],
[1, 2],
[2, 3]])