Python:SciPyDCT不适用于大型矩阵



我需要计算一个大矩阵的DCT。我的代码似乎适用于较小的矩阵,但对于大小为50000乘50000的矩阵,会出现以下错误:

error: (n>0&&n<=size(x)) failed for the 1st keyword n: ddct2:n=50000
import numpy as np
from scipy import fftpack
# this works fine
y = fftpack.dct(np.random.normal(size = (1000,1000)))
# this throws an error
z = fftpack.dct(np.random.normal(size = (50000,50000)))

如何解决这个问题?非常感谢。

使用scipy.fft(而不是fftpack(:似乎对我有效

import numpy as np
import scipy.fft as fft
x = np.random.normal(size=(50000,50000))
y = fft.dct(x)

不过,请注意,一个50000大小的方形ndarray需要20 GB以上。在一次处理那么多数据时,您可能会遇到问题。

版本说明:Python 3.9.2、NumPy 1.19.3、SciPy 1.6.1

相关内容

  • 没有找到相关文章

最新更新