Numpy efficient matrix self-multiplication (gram matrix)

前端 未结 2 1295
死守一世寂寞
死守一世寂寞 2020-12-11 04:23

I want to multiply B = A @ A.T in numpy. Obviously, the answer would be a symmetric matrix (i.e. B[i, j] == B[j, i]).

However, it is not cl

2条回答
  •  隐瞒了意图╮
    2020-12-11 04:52

    As noted in @PaulPanzer's link, dot can detect this case. Here's the timing proof:

    In [355]: A = np.random.rand(1000,1000)
    In [356]: timeit A.dot(A.T)
    57.4 ms ± 960 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
    In [357]: B = A.T.copy()
    In [358]: timeit A.dot(B)
    98.6 ms ± 805 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
    

    Numpy dot too clever about symmetric multiplications

提交回复
热议问题