我正在努力有效地np.fft.fftn
和二维 numpy 数组的数组。 V0
是形状为 (nvar,nx,ny)
的数组,我想对 V0
第一维的每个二维数组执行 FFT 。我在这里尝试做的是比较 V0
第一个轴上的迭代之间,并将其与对整个多维数组进行 FFT 的简单尝试进行比较:
In [45]: import numpy as np
In [46]: V0 = np.random.random((3,128,128))
In [47]: V0fft = []
In [48]: for i in xrange(V0.shape[0]):
...: V0fft.append(np.fft.fftn(V0[i]))
...:
In [49]: V0fftdirect = np.fft.fftn(V0)
In [50]: np.amax(np.abs(V0fft - V0fftdirect))
Out[50]: 16366.207818488827
那么我怎样才能正确地做到这一点呢?
最佳答案
V0fftdirect = np.fft.fft2(V0)
完成了这项工作:
In [93]: import numpy as np
In [94]: V0 = np.random.random((3,128,128))
In [95]: V0fftfor = []
In [96]: for i in xrange(V0.shape[0]):
...: V0fftfor.append(np.fft.fftn(V0[i]))
...:
In [97]: V0fftdirect = np.fft.fft2(V0)
In [98]: np.amax(np.abs(V0fftfor - V0fftdirect))
Out[98]: 0.0
关于Python:numpy fftn 在 numpy 数组列表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41012805/