Python: SciPy DCT 不适用于大矩阵
Python: SciPy DCT does not work on large matrices
我需要计算一个大矩阵的 DCT。我的代码似乎适用于较小的矩阵,但对于大小为 50000 x 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 以上的空间。您可能 运行 遇到一次性处理这么多数据的问题。
版本说明:Python3.9.2,NumPy 1.19.3,SciPy1.6.1
我需要计算一个大矩阵的 DCT。我的代码似乎适用于较小的矩阵,但对于大小为 50000 x 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 以上的空间。您可能 运行 遇到一次性处理这么多数据的问题。
版本说明:Python3.9.2,NumPy 1.19.3,SciPy1.6.1