Valerio Maggio 6 anni fa
parent
commit
8dde2062a1
2 ha cambiato i file con 148 aggiunte e 430 eliminazioni
  1. 148 0
      00 - Tutorial Intro.ipynb
  2. 0 430
      01 - Preliminaries.ipynb

+ 148 - 0
00 - Tutorial Intro.ipynb

@@ -0,0 +1,148 @@
+{
+ "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"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "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.6.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}

+ 0 - 430
01 - Preliminaries.ipynb

@@ -1,430 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "<h1 style=\"text-align: center;\">NumPy Array Tutorial @ EuroScipy 2015</h1>\n",
-    "\n",
-    "<img src=\"images/euroscipy_logo.png\" />"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Goal of this Tutorial\n",
-    "\n",
-    "- **Introduce the basics of Numpy**, and some more advanced stuff;\n",
-    "- **Provide some concrete examples** where Numpy takes a central role.\n",
-    "        "
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Schedule\n",
-    "\n",
-    "Outline:\n",
-    "\n",
-    "**14:00 - 14:15** Preliminaries\n",
-    "\n",
-    "- Making sure your computer is set up and everything is up&running\n",
-    "\n",
-    "** PART 1 ** Numpy Basics (14:15 - 16:30)\n",
-    "\n",
-    "**14:15 - 15:00** (45 mins) Introduction to Numpy\n",
-    "\n",
-    "- What is Numpy?\n",
-    "- Introduction to Numpy Arrays\n",
-    "    - Understand the importance of numpy arrays over lists\n",
-    "- Numpy Data Types\n",
-    "    - Conversion and Type Casting\n",
-    "    - Numerical Representations\n",
-    "- Record Array\n",
-    "\n",
-    "** 15:00 - 15:30 ** (30 mins) Indexing and Slicing\n",
-    "\n",
-    "- Indexing numpy arrays\n",
-    "    - fancy indexing\n",
-    "    - memory management\n",
-    "- Slicing \n",
-    "- Vectorization\n",
-    "- Using arrays in Conditions\n",
-    "\n",
-    "** 15:30 - 15:45 ** (15 mins) Coffee Break\n",
-    "\n",
-    "** 15:45 - 16:15** (30 mins) Numpy Operations\n",
-    "\n",
-    "- Linear Algebra\n",
-    "- Array and Matrix\n",
-    "- Reshaping and Resizing\n",
-    "\n",
-    "\n",
-    "** PART 2 ** Advanced Numpy Functions and Applications (16:30 - 17:30)\n",
-    "\n",
-    "** 16:15- 16:55 ** (40 mins) Data Processing\n",
-    "\n",
-    "- File I/0\n",
-    "- Data Processing\n",
-    "- Memmap and Serialization\n",
-    "- `numexpr`\n",
-    "\n",
-    "** 16:55 - 17:25 ** (30 mins) Numpy Application (Machine Learning)\n",
-    "\n",
-    "- Machine Learning Intro\n",
-    "- Clustering with scipy\n",
-    "- Clustering with scikit-learn\n",
-    "\n",
-    "** 17:25 - 17:30 ** A look at the future (of Numpy)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Requirements"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "This tutorial requires the following packages:\n",
-    "\n",
-    "- Python version 2.7, 3.4+\n",
-    "- `numpy` version 1.5 or later: http://www.numpy.org/\n",
-    "- `scipy` version 0.9 or later: http://www.scipy.org/\n",
-    "- `matplotlib` version 1.0 or later: http://matplotlib.org/\n",
-    "- `ipython` version 1.0 or later, with notebook support: http://ipython.org\n",
-    "\n",
-    "(and for the *second part* of the tutorial):\n",
-    "\n",
-    "- `scikit-learn` version 0.12 or later: http://scikit-learn.org\n",
-    "- `numexpr` version 2.4.1 or later: https://github.com/pydata/numexpr\n",
-    "\n",
-    "The easiest way to get these is to use an all-in-one installer such as [Anaconda](http://www.continuum.io/downloads) from Continuum. These are available for multiple architectures."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "collapsed": true
-   },
-   "source": [
-    "# How to setup your environment"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## The simplest way"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "The easiest way to get these is to use the [conda](https://store.continuum.io) environment manager. \n",
-    "\n",
-    "I suggest downloading and installing [miniconda](http://conda.pydata.org/miniconda.html).\n",
-    "\n",
-    "The following command will install all required packages:\n",
-    "\n",
-    "    $ conda install numpy scipy matplotlib scikit-learn ipython-notebook numexpr\n",
-    "    \n",
-    "Alternatively, you can download and install the (very large) **Anaconda software distribution**, found at [https://store.continuum.io/]()."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## The \"longest\" way"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "1. Create your **Virtual Environment** (highly suggested)\n",
-    "\n",
-    "    - `$ virtualenv -p <path to the python interpreter you want to fork> numpy_training`\n",
-    "    - `$ source numpy_training/bin/activate`\n",
-    "\n",
-    "2. **pip** on the run\n",
-    "    - `pip install numpy`\n",
-    "    - `pip install scipy`\n",
-    "    - `pip install matplotlib`\n",
-    "    - `pip install \"ipython[all]\"  # don't forget the quotation!`\n",
-    "    - `pip install scikit-learn`\n",
-    "    - `pip install numexpr`\n",
-    "    \n",
-    "    **OR**\n",
-    "    \n",
-    "    - `pip install -r requirements.txt`"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Alternatives\n",
-    "\n",
-    "- **Linux**: If you're on Linux, you can use the linux distribution tools \n",
-    "\n",
-    "    - Type, for example, `apt-get install numpy` or `yum install numpy`.\n",
-    "    \n",
-    "    \n",
-    "\n",
-    "- **Mac**: If you're on OSX, there are similar tools such as MacPorts or HomeBrew which contain pre-compiled versions of these packages.\n",
-    "\n",
-    "    - Just type `brew install numpy` in your terminal (if you're using HomeBrew)\n",
-    "\n",
-    "\n",
-    "\n",
-    "- **Windows**: Windows can be challenging: the best bet is probably to use a package installer such as Anaconda, above."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Python Version"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "I'm currently running this tutorial with **Python 3** on **Anaconda*"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "metadata": {
-    "collapsed": false
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Python 3.4.3 :: Anaconda 2.3.0 (x86_64)\r\n"
-     ]
-    }
-   ],
-   "source": [
-    "!python --version"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# How to test if everything is Up&Running"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## 1. Try running iPython with notebook support"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {
-    "collapsed": false
-   },
-   "outputs": [],
-   "source": [
-    "!ipython notebook  # run this in your terminal"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## 2. Try to import everything"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {
-    "collapsed": true
-   },
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "import scipy as sp\n",
-    "import matplotlib.pyplot as plt\n",
-    "import numexpr as ne\n",
-    "import sklearn"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## 3. Check Installed Versions "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {
-    "collapsed": false
-   },
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "numpy: 1.9.2\n",
-      "scipy: 0.16.0\n",
-      "matplotlib: 1.4.3\n",
-      "iPython: 4.0.0\n",
-      "scikit-learn: 0.16.1\n",
-      "numexpr: 2.4.3\n"
-     ]
-    }
-   ],
-   "source": [
-    "import numpy\n",
-    "print('numpy:', numpy.__version__)\n",
-    "\n",
-    "import scipy\n",
-    "print('scipy:', scipy.__version__)\n",
-    "\n",
-    "import matplotlib\n",
-    "print('matplotlib:', matplotlib.__version__)\n",
-    "\n",
-    "import IPython\n",
-    "print('iPython:', IPython.__version__)\n",
-    "\n",
-    "import sklearn\n",
-    "print('scikit-learn:', sklearn.__version__)\n",
-    "\n",
-    "import numexpr\n",
-    "print('numexpr:', numexpr.__version__)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### 4. Enable the inline visualisation of plots"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 8,
-   "metadata": {
-    "collapsed": false
-   },
-   "outputs": [],
-   "source": [
-    "%matplotlib inline"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "<br>\n",
-    "<hr>\n",
-    "<h1 style=\"text-align: center;\">If everything worked down here, you're ready to start!</h1>"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "<br>\n",
-    "<hr>"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Consulting Material"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "You have two options to go through the material presented in this tutorial:\n",
-    "\n",
-    "* Read (and execute) the material as **iPython/Jupyter** notebooks\n",
-    "* (just) read the material as (HTML) slides"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "In the first case, all you need to do is just execute `ipython notebook` (or `jupyter notebook`) depending on the version of `iPython` you have installed on your machine\n",
-    "\n",
-    "(`jupyter` command works in case you have `iPython 4.0.x` installed)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "In the second case, you may simply convert the provided notebooks in `HTML` slides and see them into your browser\n",
-    "thanks to `nbconvert`.\n",
-    "\n",
-    "Thus, move to the folder where notebooks are stored and execute the following command:\n",
-    "\n",
-    "    ipython nbconvert --to slides ./*.ipynb --post serve\n",
-    "    \n",
-    "   \n",
-    "(Please substitute `ipython` with `jupyter` in the previous command if you have `iPython 4.x` installed on your machine)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## In case..."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "..you wanna do **both** (interactive and executable slides), I highly suggest to install the terrific `RISE` ipython notebook extension: [https://github.com/damianavila/RISE]()"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3",
-   "language": "python",
-   "name": "python3"
-  },
-  "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.5.1"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}