Python Tutorial
NumPy Rayleigh Distribution
Rayleigh is used for signal processing and wind speed. scale is the mode (peak) of the distribution.
random.rayleigh()
scale defaults to 1.0.
from numpy import random
print(random.rayleigh(scale=2, size=(2, 3)))📘 Real-World Deep Dive
Knowing <strong>NumPy Random Rayleigh (NumPy)</strong> well is what turns NumPy from a curiosity into a daily tool — you'll reach for it in nearly every real project.
Real-Life Scenario
An end-to-end usage of NumPy Random Rayleigh that you'd actually see in a data pipeline or analytics notebook.
Real-Life Example
import numpy as np
rng = np.random.default_rng(0)
speeds = rng.rayleigh(scale=2.0, size=8)
print(speeds)Expected Output
(see source)Common mistakes
- NumPy uses 0-based, C-order indexing — the rightmost axis is the *fastest-varying* one. Mixing it with Fortran-order arrays is a common surprise.
np.array([[1,2],[3,4]], dtype=int)is fine, but a ragged Python list produces dtype=object and silently disables vectorisation.- In-place ops (
a *= 2) sometimes break views instead of returning a new array; usenp.multiply(a, 2, out=...)if explicitness matters. - Treating NumPy Random Rayleigh as a black box without reading the docs — the API has subtle defaults that bite when you scale.
🚀 Performance & Best Practices
- Vectorise: replace Python
forloops with ufuncs; you can expect 10–100× speedups. - Pre-allocate output arrays with
np.emptyinstead of growing them withnp.append. - Keep data in float32 unless you need float64 precision — half the memory, double the cache locality.
- When working with NumPy, prefer vectorised / batched operations over Python loops.
🧪 Try It Yourself
- Reproduce the snippet on a representative slice of your own data.
- Profile the snippet with
cProfileortimeitand find the single biggest improvement. - Generalise the snippet into a small, reusable function you can drop into future projects.