Numpy:执行类似乘法的加法

时间:2018-04-17 04:39:31

标签: python numpy

我想定义我自己的加法运算符,它采用Nx1向量(称之为A)和1xN向量(B),使得第i行和第j列中的元素是i ^的总和。 A中的元素和B中的第j个元素。此处说明了一个例子。enter image description here

我能够为函数编写以下代码(据我所知它是正确的)。

def test_fn(a, b):
    a_len = a.shape[0]
    b_len = b.shape[1]
    prod = np.array([[0]*a_len]*b_len)
    for i in range(a_len):
        for j in range(b_len):
            prod[i, j] = a[i, 0] + b[0, j]
    return prod

但是,我正在使用的向量包含数千个元素,上面的函数非常慢。我想知道是否有更好的方法来解决这个问题,或者是否有一个numpy函数可以使用。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:2)

根据numpy的广播规则,您可以使用a+b来实现自己定义的运算符。

  

广播的第一条规则是,如果所有输入数组的维度数不同,则在较小数组的形状之前重复预设“1”,直到所有数组的维数相同。 / p>      

广播的第二个规则确保沿着特定维度的大小为1的数组表现为具有沿该维度具有最大形状的数组的大小。假定数组元素的值沿着“广播”数组的那个维度是相同的。

enter image description here