Python is one of the world's most popular programming languages for numerical computing. In areas of application like physical simulation, signal processing, predictive analytics, and more, engineers and data scientists increasingly use Python as their primary tool for working with numerical large-scale data.
Despite this diversity of application domains, almost all numerical programming in Python builds upon a small foundation of libraries. In particular, the numpy.ndarray is the core data structure for the entire PyData ecosystem, and the numpy library provides many of the foundational algorithms used to power more domain-specific libraries.
The goal of this tutorial is to provide an introduction to numpy -- how it works, how it's used, and what problems it aims to solve. In particular, we will focus on building up students' mental model of how numpy works and how idiomatic usage of numpy allows us to implement algorithms much more efficiently than is possible in pure Python.