NumPy & Array Thinking
The ndarray's vectorization, broadcasting, and memory model are the performance habits all numerical Python builds on.
NumPy's ndarray is the memory model that everything numerical in Python builds on, and thinking in arrays is the single biggest performance habit a quant can acquire. Vectorization replaces slow Python loops with whole-array operations; broadcasting lets arrays of different shapes combine without copies; views versus copies decide whether your code is efficient or quietly quadratic. Layout — contiguous blocks of homogeneous dtype — is why operations are fast and why pandas can sit on top for free. The habits formed here, avoiding per-row loops and keeping data in typed arrays, carry directly into pandas and Polars and into every backtest you will write.