我有一个50维数组,其尺寸为255 x 255 x 255 x ...(50倍).. x255。所以它总共有50 ^ 255个浮点数。它甚至超出了考虑适合RAM的范围。此外,我需要采用该阵列的50维快速傅里叶变换(DFT)。我不能在普通PC上的python中做到这一点。我甚至无法想象在GPU上做这件事。所以我猜我必须得到硬盘内存的帮助,但即使这样太大了。我不需要实时,我甚至可以负担得起它运行的几天。我不知道我需要什么样的机器,甚至可能吗?感谢您的建议。超级计算机,网格或其他东西,即使它太昂贵,我也不担心投资。
答案 0 :(得分:2)
如果您found enough universes to save your data in,您可以执行以下操作:
傅立叶变换是可分离的,这意味着一个接一个地计算每个轴的DFT将得到与计算n维DFT时相同的结果:
for i in range(C.ndim):
C[...] = numpy.fft.fft(C, axis=i)
使用2D张量仔细检查值是否正确(因为我们有一个2D FFT numpy.fft.fft2
进行比较):
import numpy
A = numpy.random.rand(*[16] * 2)
B = numpy.fft.fft2(A)
C = A.astype(numpy.complex) # output vector for separable FFT
for i in range(C.ndim):
C[...] = numpy.fft.fft(C, axis=i)
numpy.allclose(C, B) # True