python Numpy:寻找一种有效的方法将向量与范德蒙矩阵相乘

6yoyoihd  于 2022-11-28  发布在  Python
关注(0)|答案(1)|浏览(148)

给定两个大小相同的数组ABN,我尝试计算以下乘积:

np.dot(A, np.vander(B, increasing=True))

但是,如果N变得非常大,我最终会遇到内存不足错误。
这是有意义的,因为内存复杂度为N^2
有没有一种高效的方法可以在内存复杂度为N(即避免初始化范德蒙矩阵)的情况下,使用任何循环来完成此操作?
任何帮助都将不胜感激!

vybvopom

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))])

相关问题