给定两个大小相同的数组A和B:N,我尝试计算以下乘积:
A
B
N
np.dot(A, np.vander(B, increasing=True))
但是,如果N变得非常大,我最终会遇到内存不足错误。这是有意义的,因为内存复杂度为N^2。有没有一种高效的方法可以在内存复杂度为N(即避免初始化范德蒙矩阵)的情况下,不使用任何循环来完成此操作?任何帮助都将不胜感激!
N^2
vybvopom1#
基于documentation of the vandermonde matrix,您可以通过以下方式构建它:
np.vander(B, increasing=True) == np.column_stack([B**(i) for i in range(len(B))])
因此,您的优化是就地执行点积:
np.column_stack([np.dot(A, B**(i)) for i in range(len(B))])
1条答案
按热度按时间vybvopom1#
基于documentation of the vandermonde matrix,您可以通过以下方式构建它:
因此,您的优化是就地执行点积: