{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NumPy Tutorial @ EuroSciPy 2019\n",
    "\n",
    "<img style=\"float: left\" src=\"images/euroscipy_logo.png\" height=\"100%\" />\n",
    "\n",
    " "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Goal of this Tutorial\n",
    "\n",
    "- Introduce the basics of scientific and numerical computation in Python using **Numpy**\n",
    "- Understand why `numpy` has a central role in the Python scientific ecosystem\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Outline\n",
    "\n",
    "**11:00 - 11:30** (_30 mins_) Numpy Basics (11:00 - 11:30)\n",
    "\n",
    "- Introduction to NumPy Arrays\n",
    "    - numpy internals schematics\n",
    "    - Reshaping and Resizing\n",
    "- Numpy Data Types\n",
    "    - Record Array\n",
    "    \n",
    "**11:30 - 12:00** (_30 mins_) Indexing and Slicing\n",
    "    \n",
    "- Indexing numpy arrays\n",
    "    - fancy indexing\n",
    "    - memory management\n",
    "    - broadcasting\n",
    "    \n",
    "- Slicing \n",
    "- Vectorization\n",
    "\n",
    "**12:00 - 12:20** (_20 mins_) Bits of Data Science with NumPy\n",
    "\n",
    "- Serialisation & I/O\n",
    "    - `.mat` files\n",
    "- Array and Matrix\n",
    "    - Matlab compatibility\n",
    "- Memmap \n",
    "- Beyond Numpy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Requirements"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This tutorial has one main requirement: `numpy`.\n",
    "\n",
    "Materials are provided as Jupyter notebooks, so IPython notebook (`pip install notebook`) is also required.\n",
    "\n",
    "\n",
    "### Python version\n",
    "\n",
    "The minimum recommended version of Python to use for this tutorial is **Python 3.5**, although \n",
    "Python 2.7 should be fine, as well as previous versions of Python 3. \n",
    "\n",
    "Py3.5+ is recommended due to a reference to the `@` operator in the linear algebra notebook.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup your environment"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you are using [Anaconda](https://www.anaconda.com) Python distribution you should already have everything that is needed.\n",
    "\n",
    "Alternatively, there is a `requirements.txt` file in the repo to install all the required packages:\n",
    "\n",
    "```\n",
    "$ pip install -r requirements.txt\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MyBinder\n",
    "\n",
    "If you don't want to bother setting up the environment on your own computer, you can use MyBinder\n",
    "\n",
    "(**Note**: recommended only with a proper Wi-Fi connection)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/leriomaggio/numpy-euroscipy/master)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.7 (NumPy EuroSciPy)",
   "language": "python",
   "name": "numpy-euroscipy"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
