| name | numpy |
| description | Best practices for numerical computing with NumPy including arrays, broadcasting, and vectorization. |
Skill: NumPy
Best practices for numerical computing with NumPy including arrays, broadcasting, and vectorization.
When to Use
Apply this skill when doing numerical computing with NumPy — arrays, broadcasting, linear algebra, random sampling.
Arrays
- Use explicit dtypes (
np.float64, np.int32) when creating arrays.
- Prefer
np.zeros, np.ones, np.empty, np.arange, np.linspace over list-based construction.
- Use structured arrays or separate arrays instead of object arrays.
Vectorization
- Replace Python loops with vectorized NumPy operations wherever possible.
- Use broadcasting rules to operate on arrays of different shapes without explicit expansion.
- Use
np.where() for conditional element-wise operations.
Memory
- Use
np.float32 instead of np.float64 when precision is not critical to halve memory.
- Use views (
reshape, slicing) instead of copies when data doesn't need mutation.
- Use
np.memmap for arrays too large to fit in RAM.
Random
- Use
np.random.default_rng(seed) (new Generator API) instead of np.random.seed().
- Always seed random generators in tests for reproducibility.
Pitfalls
- Don't compare floats with
==; use np.allclose() or np.isclose().
- Beware of silent integer overflow in integer arrays.
- Avoid
np.matrix — it's deprecated; use 2D np.ndarray.