As the fundamental package for scientific computing with Python, NumPy offers powerful n-dimensional arrays along with comprehensive mathematical functions and tools. Even if your goal is to use high-level libraries for specific applications such as data science, astronomy, computational biology or finance, familiarity with NumPy data structures and techniques is essential for writing performant and elegant code.
This course is designed for people who are familiar with Python and want to use NumPy to write efficient scientific code. We will focus on the main features of NumPy arrays and show how to use them to represent and manipulate data.
By the end of this course, you should be able to:
- Understand how to create, manipulate and efficiently use NumPy arrays
- Understand slicing, advanced indexing and vectorization to write performant scientific code in Python
- Apply tools from the Polynomial and Random Number Generation subpackages to solve specific problems
The course is structured around four Jupyter notebooks.
-
Intro
- Getting data from a csv file
- Basic indexing and manipulation
- Saving data for later use with
np.savez
- Basic built-in NumPy tools for plotting and integrating with Matplotlib.
-
How to write efficient code
- Slicing
- Advanced indexing
-
Vectorization: an introduction to universion functions
- When and how to vectorize
- Why this works: ufuncs
- Examples and applications
-
Submodules
- The polynomial submodule: analyzing and building an approximation to existing data
- Random Number Generation and manipulation
All content is in Jupyter notebooks in the notebooks
folder, named using the following pattern:
01_title_of_first_lesson.ipynb
02_title_of_second_lesson.ipynb
All data sets used in the worked examples are in the data
folder, and there is a file index in the README.md file in that folder.
NumFOCUS is a 501(c)-3 non-profit in the United States. Its mission is to promote open practices in research, data, and scientific computing by serving as a fiscal sponsor for open source projects and organizing community-driven educational programs. NumFOCUS envisions an inclusive scientific and research community that utilizes actively supported open source software to make impactful discoveries for a better world.
The NumFOCUS Academy is an educational initiative begun in 2020, to develop online learning opportunities for our community. It first served as a platform for the online conferences JupyterCon 2020 and PyData Global.
In 2021, we are developing a catalog of courses to build your skills on the most useful open-source software tools for data science and technical computing.
At NumFOCUS Academy, we aim to create learning opportunities inspired by the open-source ethos. Our courses teach about the NumFOCUS projects, often by the project contributors themselves. No other learning platform has this to offer!
Our instructors are members of the NumFOCUS international community, contribute to our open-source projects, and share their expertise widely. Want to be a part of it? Get in touch by emailing: academy-admin@numfocus.org