【发布时间】:2019-03-11 22:24:24
【问题描述】:
我有十个6000 x 784 矩阵。如果我运行 np.cov 然后在它们上运行 pinv,总时间是:
%timeit for n in range(10): pinv(np.cov(A,rowvar = False))
1.64 s ± 78.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
如果我改为循环 np.cov 并计算 3D 堆栈的 pinv,我会得到:
%timeit for n in range(10): dd[n] = np.cov(A,rowvar = False)
485 ms ± 18 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit pinv(dd)
4.59 s ± 369 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
为什么 3D 上的 pinv 这么慢?
我该怎么做才能计算堆栈的 np.cov 和相应的 pinv?
【问题讨论】:
标签: python numpy vectorization