Why doesn't Fourier work properly with NumericArray?

I use Wolfram to process simulation data which is usually some kind of multidimensional array with dimensions like [Nt, Nz, Ny, Nx, Nd]. I load the data from files in binary format, so it is already efficiently packed from the start.

I need to apply discrete Fourier transform along time axis only. Since Wolfram does not support it by default (which is a separate question), I have to do Transpose, then Map the Fourier onto the lowest level.

To save some RAM (and hopefully improve performance), I tried to convert my data into NumericArray. However, despite NumericArray being all real numbers neatly packed, Fourier cannot be applied to NumericArray at all! I also tried with PackedArray and it works (albeit with some other issues).

data = Table[RandomReal[], {i, 8}, {y, 16}];
dataNum = NumericArray[data, "Real32"];

f1 = Fourier[data]; (* does work *)
f2 = Fourier[dataNum]  (* does not work *)

NumericalArray[] returns an object, not a matrix. Use Normal[], e.g., f2=Fourier[Normal[dataNum]]

If OP uses: Normal[] command then no improved performance to be ?

For Me this is a big oversight !

Can you write to WRI and and explain what you need.

Regards M.I.

Wolfram’s Fourier does not support NumericArray directly. A simple workaround is converting NumericArray back to a standard list before applying Fourier: f2 = Fourier[Normal[dataNum]].
However, this may negate potential memory benefits. If performance is critical, consider sticking with PackedArray or implementing a custom DFT using LibraryFunctionLoad for optimized handling of NumericArray.