numpy.fft.rfftn -> non-contiguous

Hello! I'm a little confused about what rfftn is doing: It seems to me that the best would be for it to return a C-contiguous array with the first element reduced by a half (plus one), so that one can easily obtain the non-repeated slices. What I get is the following: In [1]: from numpy import * In [2]: a = random.rand(8,8,8) In [3]: fa = fft.rfftn(a) In [4]: fa.shape Out[4]: (8, 8, 5) In [5]: fa.flags Out[5]: CONTIGUOUS : False FORTRAN : False OWNDATA : False WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False In [6]: fa.swapaxes(-1,-2).flags Out[6]: CONTIGUOUS : True FORTRAN : False OWNDATA : False WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False What I would like to have is fa.shape: (5,8,8) fa.flags: CONTIGUOUS = True So, now fa[0] is a contiguous block containing the data that is not supposed to appear twice in the complex fft (that is, it would be nice if fft.rfftn(a)[0] == fft.fftn(a)[0]). I tried playing with the axes argument in rfftn, to no avail. I can do without, but at least it looks kind of ugly to me that the array returned by a built-in function is not contiguous. By the way, I am using the official debian unstable numpy package. It doesn't look like it is using fftw, and I don't know if any of this behaviour would be different if I had compiled numpy by myself - I am not even sure using fftw is an option with numpy. Thanks for any answer/comments on that! Pierre -- Pierre Thibault 616 Clark Hall, Cornell University (607) 255-5522
participants (1)
-
Pierre Thibault