# Never get in battle of bits without ammunitions
[](https://mybinder.org/v2/gh/leriomaggio/numpy-euroscipy/master)
**Title Credits**: Gentle reference to the homonymous [talk](https://pyvideo.org/europython-2013/never-get-in-a-battle-of-bits-without-ammunition.html) presented at
**EuroPython 2013** in Florence by my friend **riko** (_a.k.a._ Enrico Franchi ).
## Abstract
The `numpy` package takes a central role in Python scientific ecosystem.
This is mainly because `numpy` code has been designed with
high performance in mind.
This tutorial will provide materials for the most essential concepts
to become confident with `numpy` and `ndarray` in (a matter of) `90 mins`.
# Outline
**Part I** Numpy Basics
- Introduction to NumPy Arrays
- numpy internals schematics
- Reshaping and Resizing
- Numerical Data Types
- Record Array
**Part II** Indexing and Slicing
- Indexing numpy arrays
- fancy indexing
- array masking
- Slicing & Stacking
- Vectorization & Broadcasting
**Part III** "Advanced NumPy"
- Serialisation & I/O
- `.mat` files
- Array and Matrix
- Matlab compatibility
- Memmap
- Bits of Data Science with NumPy
- NumPy beyond `numpy`
### Python version
The minimum recommended version of Python to use for this tutorial is **Python 3.5**, although
Python 2.7 should be fine, as well as previous versions of Python 3.
Py3.5+ is recommended due to a reference to the `@` operator in the linear algebra notebook.
## License and Sharing Material

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.