Possible Duplicate:
Relationship between scipy and numpy
For instance, NumPy has window functions bartlett, blackman, hamming, hanning, kaiser, while SciPy has these and several more, but they seem to produce identical output.
NumPy has numpy.fft.fft2(a, s=None, axes=(-2, -1)).
SciPy has scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0).
Why are there duplicates? Just for backwards compatibility? If so, why are they defined differently in different places? Which should I prefer when writing something new?
From the SciPy FAQ:
So yes, the duplicates are for backwards compatibility. In general, they give the same result. However, as the FAQ states, new features are usually implemented into SciPy, but not necessarily NumPy. This includes bug fixes. I have found, for example, that numpy.linalg.eig returned incorrect eigenvalues for a complex matrix, whereas scipy.linalg.eig returned correct ones.
In general, I prefer stick with the "ideal world" scenario from the FAQ: I use NumPy for the basic array manipulations, and SciPy for all my linear algebra. This way I don’t run into any surprises.