大矢量的Numpy fft错误:对于n>2**28,“ValueError:不允许负维数”

2024-10-02 02:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试傅立叶变换一个相当大的向量(最多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?你知道吗


Tags: 内存fftnumpycacheiflibnpfunction

热门问题