How to Compute FFT Using NumPy: Simple Guide
You can compute the Fast Fourier Transform (FFT) of a signal using NumPy's
numpy.fft.fft() function. Pass your data array to this function to get the frequency components as a complex array.Syntax
The basic syntax to compute FFT with NumPy is numpy.fft.fft(a, n=None, axis=-1, norm=None).
a: Input array containing the signal data.n: Optional length of the FFT. If not given, it uses the length ofa.axis: Axis along which to compute the FFT. Default is the last axis.norm: Normalization mode. Can beNoneor'ortho'.
python
import numpy as np # Syntax example result = np.fft.fft(a=[1, 2, 3, 4])
Example
This example shows how to compute the FFT of a simple signal and print the frequency components.
python
import numpy as np # Create a simple signal: 4 points signal = np.array([1, 2, 3, 4]) # Compute FFT fft_result = np.fft.fft(signal) # Print the FFT output print(fft_result)
Output
[10.+0.j -2.+2.j -2.+0.j -2.-2.j]
Common Pitfalls
Common mistakes when using numpy.fft.fft() include:
- Passing non-numeric or multi-dimensional data without specifying the axis.
- Not understanding that the output is complex numbers representing amplitude and phase.
- Forgetting to interpret the FFT output correctly, such as taking the magnitude with
np.abs().
Always remember FFT output is complex and often you want the magnitude or power spectrum.
python
import numpy as np signal = np.array([1, 2, 3, 4]) # Wrong: printing raw FFT without magnitude fft_wrong = np.fft.fft(signal) print("Raw FFT output:", fft_wrong) # Right: get magnitude to see amplitude fft_magnitude = np.abs(fft_wrong) print("FFT magnitude:", fft_magnitude)
Output
Raw FFT output: [10.+0.j -2.+2.j -2.+0.j -2.-2.j]
FFT magnitude: [10. 2.82842712 2. 2.82842712]
Quick Reference
Remember these tips when using numpy.fft.fft():
- Input is your time-domain signal array.
- Output is complex frequency-domain data.
- Use
np.abs()to get amplitude. - Use
np.fft.fftfreq()to get frequency bins.
Key Takeaways
Use
numpy.fft.fft() to compute the FFT of a signal array.FFT output is complex; use
np.abs() to get the amplitude.Specify the FFT length
n if you want zero-padding or truncation.Use
np.fft.fftfreq() to find the corresponding frequency values.Avoid passing non-numeric data or wrong axis without specifying it.