FFT in Numpy (Python) when N is not a power of 2
In my experience the algorithms don't do automatic padding, or at least some of them don't.  For example, running the scipy.signal.hilbert method on a signal that wasn't of length == a power of two took about 45 seconds.  When I padded the signal myself with zeros to such a length, it took 100ms.
YMMV but it's something to double check basically any time you run a signal processing algorithm.
My question is about the algorithm which is used in Numpy's FFT function.
The documentation of Numpy says that it uses the Cooley-Tukey algorithm. However, as you may know, this algorithm works only if the number N of points is a power of 2. 
Does numpy pad my input vector x[n] in order to calculate its FFT X[k]? (I don't think so, since the number of points I have in the output is also N). How could I actually "see" the code which is used by numpy for its FFT function?
Cheers!