Scipy resample, "fourier method" explanation
Suppose you have initially a real-valued sequence x of length N. The function is basically doing this:


To upsample, it transforms to the frequency domain and adds N/2 zeros at the end. Then it transforms back to the time-domain.
To downsample, it transforms to the frequency domain and deletes the second and third groups of N/4 elements (which correspond to the half with the highest frequency components). Then it transforms back.


You can try it on your own running step by step the source code for the resample() function.

The theory regarding these methods can be found in this answer.