This set of tutorials and educational materials is being developed, IT IS NOT INTEGRATED IN THE HTML DOCS AT https://www.numpy.org/devdocs/
The goal of this repository is to provide high-quality resources by the NumPy project, both for self-learning and for teaching classes with. If you're interested in adding your own content, check the Contributing section.
To download a local copy of the .ipynb
files, you can either
clone this repository
or navigate to any of the documents listed below and download it individually.
- Learn to write a NumPy tutorial: our style guide for writing tutorials.
- Tutorial: Linear algebra on n-dimensional arrays
- Tutorial: CS231n Python Tutorial
- Tutorial: Determining Moore's Law with real data in NumPy
- Tutorial: Saving and sharing your NumPy arrays
- Tutorial: NumPy deep learning on MNIST from scratch
- Tutorial: X-ray image processing
We very much welcome contributions! If you have an idea or proposal for a new tutorial, please open an issue with an outline.
Don’t worry if English is not your first language, or if you can only come up with a rough draft. Open source is a community effort. Do your best – we’ll help fix issues.
Images and real-life data make text more engaging and powerful, but be sure what you use is appropriately licensed and available. Here again, even a rough idea for artwork can be polished by others.
The choice of Jupyter Notebook in this repo instead of the usual format (reStructuredText, through Sphinx) used in the main NumPy documentation has two reasons:
- Jupyter notebooks are a common format for communicating scientific information.
- rST may present a barrier for some people who might otherwise be very interested in contributing tutorial material.
You may notice that some of our content is in markdown format (.md
files).
This is part of an ongoing restructuring of the repository workflow. However,
you can still submit your content as a Jupyter Notebook file.
If you have your own tutorial in the form of a Jupyter notebook (a .ipynb
file) and you'd like to add it to the repository:
Go to https://github.com/numpy/numpy-tutorials/issues and create a new issue with your proposal. Give as much detail as you can about what kind of content you would like to write (tutorial, how-to) and what you plan to cover. We will try to respond as quickly as possible with comments, if applicable.
You can use our Tutorial Style Guide to make your content consistent with our existing tutorials.
Remember to clear all outputs on your notebook before uploading it.
Update the environment.yml
file with the dependencies for your
tutorial (only if you add new dependencies).
Update the attribution section (below) to credit the original tutorial author, if applicable.
Create a pull request.

🎉 Wait for review!
For more information about GitHub and its workflow, you can see this document.
- The cs231n tutorial is by @jcjohnson. The full tutorial in its original form is linked via [numpy.org][learn].
- The SVD tutorial is by @melissawm. The full tutorial is available via the tutorials page of the official NumPy documentation.
The following links may be useful:
- NumPy Code of Conduct
- Main NumPy documentation
- NumPy documentation team meeting notes
- NEP 44 - Restructuring the NumPy documentation
- Blog post - Documentation as a way to build Community
Note that regular documentation issues for NumPy can be found in the main NumPy
repository (see the Documentation
labels there).