我正在尝试傅立叶变换一个相当大的向量(最多n = 2**30
)。当这种情况发生时,python崩溃(我得到一个弹出窗口说python已经停止工作)。也许我的内存已经用完了(虽然我有128GB的内存),我试着对更小的向量进行傅立叶变换。
它与n = 2**28
一起工作,大约需要210秒。但是,当我尝试n = 2**29
时,它不起作用:
import numpy as np
N = 2**29
x = np.random.rand(N)
X = np.fft.fft(x)
产生错误:
c:\program files\python36\lib\site-packages\numpy\fft\fftpack.py in fft(a, n, axis, norm)
190 if n is None:
191 n = a.shape[axis]
--> 192 output = _raw_fft(a, n, axis, fftpack.cffti, fftpack.cfftf, _fft_cache)
193 if _unitary(norm):
194 output *= 1 / sqrt(n)
c:\program files\python36\lib\site-packages\numpy\fft\fftpack.py in _raw_fft(a, n, axis, init_function, work_function, fft_cache)
63 wsave = fft_cache.pop_twiddle_factors(n)
64 if wsave is None:
---> 65 wsave = init_function(n)
66
67 if a.shape[axis] != n:
ValueError: negative dimensions are not allowed
这是怎么回事?numpy fft是否仅限于n = 2**28
?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐