# Never get in a data battle without Numpy arrays

Material for the training on Numpy presented at EuroScipy 2015

## Abstract

The `numpy` package takes a central role in 
Python data science code. This is mainly 
because numpy code has been designed with
high performance in mind. This tutorial
will provide the most essential concepts
to become confident with `numpy` and `ndarray`s.
Then some concrete examples of applications
where numpy takes a central role, will 
be presented as well.

## Description

It is very hard to be a scientist without knowing how to write code, 
and nowadays **Python** is probably the language of choice in many research fields.
This is mainly because the Python ecosystem includes a lot of tools and libraries 
for many research tasks:  `pandas` for *data analysis* , 
`networkx` for *social network analysis*, 
`scikit-learn` for *machine learning*, and so on.

Most of these libraries relies (or are built on top of) `numpy`.
Therefore, `numpy` is a crucial component of the common Python
stack used for numerical analysis and data science.

On the one hand, NumPy code tends to be much cleaner (and faster) than 
"straight" Python code that tries to accomplish the same task. 
Moreover, the underlying algorithms have 
been designed with high performance in mind.

This training is organised in two parts: the first part is 
intended to provide most of the essential concepts 
needed to become confident with NumPy data structures and functions.

In the second part, some examples of data analysis libraries and code
will be presented, where NumPy takes a central role.

Here is a list of software used to develop and test the code examples presented
during the training:

* Python 3.x (2.x would work as well)
* iPython 2.3+ (with **notebook support**) or Jupyter: 
    * `pip install ipython[notebook]` (OR)
    * `pip install jupyter`
* numpy 1.9+
* scipy 0.14+
* scikit-learn 0.15+
* numexpr: 2.4.+


## Target Audience

The training is meant to be mostly introductory, thus it is perfectly suited
for **beginners**. However, a good proficiency in Python programming is (at least)
required.

## License and Sharing Material

<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
