{ "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.8.5" }, "name": "", "signature": "sha256:43e07868a60307f7a7596df847c0ff6452581427ad5abf97567d77921514b11b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Agenda\n", "\n", "1. Installation\n", "\n", "2. Basics\n", "\n", "3. Iterables \n", "\n", "4. Numpy (for math and matrix operations)\n", "\n", "5. Matplotlib (for plotting)\n", "\n", "6. Q&A " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Note: This tutorial is based on Python 3.8\n", "# but it should apply to all Python 3.X versions\n", "# Please note that this tutorial is NOT exhaustive\n", "# We try to cover everything you need for class assignments\n", "# but you should also navigate external resources\n", "#\n", "# More tutorials:\n", "# NUMPY:\n", "# https://cs231n.github.io/python-numpy-tutorial/#numpy\n", "# https://numpy.org/doc/stable/user/quickstart.html\n", "# MATPLOTLIB:\n", "# https://matplotlib.org/gallery/index.html\n", "# BASICS:\n", "# https://www.w3schools.com/python/\n", "# CONSULT THESE WISELY:\n", "# The official documentation, Google, and Stack-overflow are your friends!" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Installation\n", "#### Anaconda for environment management \n", "\n", "https://www.anaconda.com/\n", "\n", "common commands\n", "\n", "conda env list <-- list all environments\n", "\n", "conda create -n newenv python=3.8 <-- create new environment\n", "\n", "conda enc create -f env.yml <-- create environment from config file\n", "\n", "conda activate envname <-- activate a environment\n", "\n", "conda deactivate <-- exit environment\n", "\n", "pip install packagename <-- install package for current environment\n", "\n", "jupyter notebook <-- open jupyter in current environment\n", "\n", "#### Package installation using conda/pip\n", "\n", "Live demo\n", "\n", "#### Recommended IDEs\n", "\n", "Spyder (in-built in Anaconda)
\n", "\n", "Pycharm (the most popular choice, compatible with Anaconda)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# common anaconda commands\n", "#conda env list\n", "#conda create -n name python=3.8\n", "#conda env create -f env.yml\n", "#conda activate python2.7\n", "#conda deactivate\n", "#install packages\n", "#pip install " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Numpy\n", "Very powerful python tool for handling matrices and higher dimensional arrays" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# create arrays\n", "a = np.array([[1,2],[3,4],[5,6]], dtype='f8')\n", "print(a)\n", "print(a.shape)\n", "# create all-zero/one arrays\n", "b = np.ones((3,4)) # np.zeros((3,4))\n", "print(b)\n", "print(b.shape)\n", "# create identity matrix\n", "c = np.eye(5)\n", "print(c)\n", "print(c.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 1. 2.]\n", " [ 3. 4.]\n", " [ 5. 6.]]\n", "(3, 2)\n", "[[ 1. 1. 1. 1.]\n", " [ 1. 1. 1. 1.]\n", " [ 1. 1. 1. 1.]]\n", "(3, 4)\n", "[[ 1. 0. 0. 0. 0.]\n", " [ 0. 1. 0. 0. 0.]\n", " [ 0. 0. 1. 0. 0.]\n", " [ 0. 0. 0. 1. 0.]\n", " [ 0. 0. 0. 0. 1.]]\n", "(5, 5)\n" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "# reshaping arrays\n", "a = np.arange(8) # [8,] similar range() you use in for-loops\n", "b = a.reshape((4,2)) # shape [4,2]\n", "c = a.reshape((2,2,-1)) # shape [2,2,2] -- -1 for auto-fill\n", "d = c.flatten() # shape [8,]\n", "e = np.expand_dims(a, 0) # [1,8]\n", "f = np.expand_dims(a, 1) # [8,1]\n", "g = e.squeeze() # shape[8, ] -- remove all unnecessary dimensions\n", "print(a)\n", "print(b, c, d, e,f)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0 1 2 3 4 5 6 7]\n", "(array([[0, 1],\n", " [2, 3],\n", " [4, 5],\n", " [6, 7]]), array([[[0, 1],\n", " [2, 3]],\n", "\n", " [[4, 5],\n", " [6, 7]]]), array([0, 1, 2, 3, 4, 5, 6, 7]), array([[0, 1, 2, 3, 4, 5, 6, 7]]), array([[0],\n", " [1],\n", " [2],\n", " [3],\n", " [4],\n", " [5],\n", " [6],\n", " [7]]))\n" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "# concatenating arrays\n", "a = np.ones((4,3))\n", "b = np.ones((4,3))\n", "c = np.concatenate([a,b], 0)\n", "print(c.shape)\n", "d = np.concatenate([a,b], 1)\n", "print(d.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(8, 3)\n", "(4, 6)\n" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "# one application is to create a batch for NN\n", "x1 = np.ones((32,32,3)) \n", "x2 = np.ones((32,32,3)) \n", "x3 = np.ones((32,32,3)) \n", "# --> to create a batch of shape (3,32,32,3)\n", "x = [x1, x2, x3]\n", "x = [np.expand_dims(xx, 0) for xx in x] # xx shape becomes (1,32,32,3)\n", "x = np.concatenate(x, 0)\n", "print(x.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(3, 32, 32, 3)\n" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "# access array slices by index\n", "a = np.zeros([10, 10])\n", "a[:3] = 1\n", "a[:, :3] = 2\n", "a[:3, :3] = 3\n", "rows = [4,6,7]\n", "cols = [9,3,5]\n", "a[rows, cols] = 4\n", "print(a)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 3. 3. 3. 1. 1. 1. 1. 1. 1. 1.]\n", " [ 3. 3. 3. 1. 1. 1. 1. 1. 1. 1.]\n", " [ 3. 3. 3. 1. 1. 1. 1. 1. 1. 1.]\n", " [ 2. 2. 2. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 2. 2. 2. 0. 0. 0. 0. 0. 0. 4.]\n", " [ 2. 2. 2. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 2. 2. 2. 4. 0. 0. 0. 0. 0. 0.]\n", " [ 2. 2. 2. 0. 0. 4. 0. 0. 0. 0.]\n", " [ 2. 2. 2. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 2. 2. 2. 0. 0. 0. 0. 0. 0. 0.]]\n" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "# transposition\n", "a = np.arange(24).reshape(2,3,4)\n", "print(a.shape)\n", "print(a)\n", "a = np.transpose(a, (2,1,0)) # swap 0th and 2nd axes\n", "print(a.shape)\n", "print(a)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(2, 3, 4)\n", "[[[ 0 1 2 3]\n", " [ 4 5 6 7]\n", " [ 8 9 10 11]]\n", "\n", " [[12 13 14 15]\n", " [16 17 18 19]\n", " [20 21 22 23]]]\n", "(4, 3, 2)\n", "[[[ 0 12]\n", " [ 4 16]\n", " [ 8 20]]\n", "\n", " [[ 1 13]\n", " [ 5 17]\n", " [ 9 21]]\n", "\n", " [[ 2 14]\n", " [ 6 18]\n", " [10 22]]\n", "\n", " [[ 3 15]\n", " [ 7 19]\n", " [11 23]]]\n" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "c = np.array([[1,2],[3,4]])\n", "# pinv is pseudo inversion for stability\n", "print(np.linalg.pinv(c))\n", "# l2 norm by default, read documentation for more options\n", "print(np.linalg.norm(c))\n", "# summing a matrix\n", "print(np.sum(c))\n", "# the optional axis parameter\n", "print(c)\n", "print(np.sum(c, axis=0)) # sum along axis 0\n", "print(np.sum(c, axis=1)) # sum along axis 1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[-2. 1. ]\n", " [ 1.5 -0.5]]\n", "5.477225575051661\n", "10\n", "[[1 2]\n", " [3 4]]\n", "[4 6]\n", "[3 7]\n" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "# dot product\n", "c = np.array([1,2])\n", "d = np.array([3,4])\n", "print(np.dot(c,d))" ], "language": "python", "metadata": { "scrolled": true }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "11\n" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "# matrix multiplication\n", "a = np.ones((4,3)) # 4,3\n", "b = np.ones((3,2)) # 3,2 --> 4,2\n", "print(a @ b) # same as a.dot(b)\n", "c = a @ b # (4,2)\n", "\n", "# automatic repetition along axis\n", "d = np.array([1,2,3,4]).reshape(4,1)\n", "print(c + d)\n", "# handy for batch operation\n", "batch = np.ones((3,32))\n", "weight = np.ones((32,10))\n", "bias = np.ones((1,10))\n", "print((batch @ weight + bias).shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[3. 3.]\n", " [3. 3.]\n", " [3. 3.]\n", " [3. 3.]]\n", "[[4. 4.]\n", " [5. 5.]\n", " [6. 6.]\n", " [7. 7.]]\n", "(3, 10)\n" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "# speed test: numpy vs list\n", "a = np.ones((100,100))\n", "b = np.ones((100,100))\n", "\n", "def matrix_multiplication(X, Y):\n", " result = [[0]*len(Y[0]) for _ in range(len(X))]\n", " for i in range(len(X)):\n", " for j in range(len(Y[0])):\n", " for k in range(len(Y)):\n", " result[i][j] += X[i][k] * Y[k][j]\n", " return result\n", "\n", "import time\n", "\n", "# run numpy matrix multiplication for 10 times\n", "start = time.time()\n", "for _ in range(10):\n", " a @ b\n", "end = time.time()\n", "print(\"numpy spends {} seconds\".format(end-start))\n", "\n", "# run list matrix multiplication for 10 times\n", "start = time.time()\n", "for _ in range(10):\n", " matrix_multiplication(a,b)\n", "end = time.time()\n", "print(\"list operation spends {} seconds\".format(end-start))\n", "\n", "# the difference gets more significant as matrices grow in size!" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "numpy spends 0.001990079879760742 seconds\n", "list operation spends 8.681961059570312 seconds\n" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "# element-wise operations, for examples\n", "np.log(a)\n", "np.exp(a)\n", "np.sin(a)\n", "# operation with scalar is interpreted as element-wise\n", "a * 3 " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "array([[3., 3., 3., ..., 3., 3., 3.],\n", " [3., 3., 3., ..., 3., 3., 3.],\n", " [3., 3., 3., ..., 3., 3., 3.],\n", " ...,\n", " [3., 3., 3., ..., 3., 3., 3.],\n", " [3., 3., 3., ..., 3., 3., 3.],\n", " [3., 3., 3., ..., 3., 3., 3.]])" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. Matplotlib\n", "Powerful tool for visualization
\n", "Many tutorials online. We only go over the basics here
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# line plot\n", "x = [1,2,3]\n", "y = [1,3,2]\n", "plt.plot(x,y)" ], "language": "python", "metadata": { "scrolled": true }, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# scatter plot\n", "plt.scatter(x,y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "# bar plots\n", "plt.bar(x,y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# plot configurations\n", "x = [1,2,3]\n", "y1 = [1,3,2]\n", "y2 = [4,0,4]\n", "\n", "# set figure size\n", "plt.figure(figsize=(5,5))\n", "\n", "# set axes\n", "plt.xlim(0,5)\n", "plt.ylim(0,5)\n", "plt.xlabel(\"x label\")\n", "plt.ylabel(\"y label\")\n", "\n", "# add title\n", "plt.title(\"My Plot\")\n", "\n", "plt.plot(x,y1, label=\"data1\", color=\"red\", marker=\"*\")\n", "plt.plot(x,y2, label=\"data2\", color=\"green\", marker=\".\")\n", "plt.legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "" ] }, { "metadata": { "needs_background": "light" }, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAUMAAAFNCAYAAACaOQ13AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU9b3/8dcnO4FAWAKEBDKDCyKyyr4lc6ytba2tVevS5drbR9Xebvb26vXXW1eqXbRe21uvvbb2UrfaatVrbWtrPZOwY1hFxJUZSDBAZE2ArPP9/XEyipCESTJnzszk83w88iDJnDnfTwTfOd/v+Z7vV4wxKKVUf5fhdQFKKZUMNAyVUgoNQ6WUAjQMlVIK0DBUSilAw1AppQANQ5WGROQ2EXnU6zpUatEwVK4TkbCItIjIiBO+v0lEjIj4enHOpR3nbBSR/SLyooic1cvaPtLT96n0o2GoEiUEXBn9QkQmAwP6eM6fGGMGAaXAXmBpH8+n+jENQ5UojwBfOu7rfwIejn4hIrNEZI+IZB33vUtEZNOpTmyMOQo8DpzT2esicpGIbBWRgyJSKSITO77/CDAO+FPHFeaNvfrJVFrQMFSJsgYYLCITRSQTuBx4f1zPGFMN7APOP+49X8AJ0W6JyCDg88DGTl47E/gdcD1QBPwFJ/xyjDFfBHYCnzLGDDLG/KS3P5xKfRqGKpGiV4fnA68Du054/bc4AYiIDAM+hnPF15V/E5GDwNvAIODqTo65HPizMeZFY0wrcA9O93x+738MlY6yTn2IUnHzCLAM8HNcF/k4jwLbOq70PgcsN8bUdXO+e4wx3z9Fm2OAHdEvjDEREakBSnpUuUp7emWoEsYYswPnRsongKc7eX0XsBq4GPgiMXSRY/AuUBb9QkQEGMsHV6W6bJMCNAxV4n0FsIwxR7p4/WHgRmAy8Ewc2vsD8EkROU9EsoHvAs3Aqo7X9wDj49COSnEahiqhjDHvGGPWdXPIMzhXcs90E5g9ae8NnHHI/wLeAz6Fc8OkpeOQHwLf77jT/G99bU+lLtHFXVWyEZF3gGuNMf/wuhbVf+iVoUoqInIJzjie7XUtqn9x9W6yiISBBqAdaDPGzHSzPZXaRKQSOBv4ojEm4nE5qp9xtZvcEYYzjTHvudaIUkrFgXaTlVIK98PQAH8XkfUico3LbSmlVK+5/QTKAmPMuyIyEnhRRF43xiw7/oCOkLwGYODAgeeedVaPV2FSSqlurV+//j1jTFF3xyRsao2I3AY0GmPu6eqYmTNnmnXrupuCppRSPSci6091A9e1brKIDBSRgujnwEeBV91qTyml+sLNbvIo4BnnUVCygMeNMS+42J5SSvWaa2FojNkOTHXr/EopFU+6hJdSaaS1tZXa2lqampq8LsUTeXl5lJaWkp2d3eP3ahgqlUZqa2spKCjA5/PRMUTVbxhj2LdvH7W1tfj9/h6/XyddK5VGmpqaGD58eL8LQgARYfjw4b2+KtYwVCrN9McgjOrLz65hqJRyzW233cY993Q5tZhnn32W11577ZTnWbZsGTNmzCArK4unnnoqniW+T8NQKeWZWMNw3LhxLF26lKuuusq1WjQMlerv6uqgvBx2747L6e68804mTJjARz7yEd544w0AfvWrXzFr1iymTp3KJZdcwtGjR1m1ahXPPfccN9xwA9OmTeOdd97p9DgAn8/HlClTyMhwL7I0DJXq75YsgRUr4I47+nyq9evX88QTT7Bx40aefvppqqurAfjsZz9LdXU1mzdvZuLEiTz00EPMnz+fiy66iLvvvptNmzZx2mmndXpcoujUGqXS1fXXw6ZNXb++fDlEjltD94EHnI+MDFi0qPP3TJsG993XzSmXc/HFF5Ofnw/ARRddBMCrr77K97//fQ4ePEhjYyMf+9jHOn1/rMe5Qa8MleqvZs+GkSOd8APnz5EjYc6cPp22szu6V199Nb/4xS/YsmULt956a5fTX2I9zg16ZahUuurmCu59X/saPPgg5OVBSwtccgn893/3usnFixdz9dVXc9NNN9HW1saf/vQnrr32WhoaGiguLqa1tZXHHnuMkpISAAoKCmhoaHj//V0dlwh6ZahUf7ZnD1x3HaxZ4/zZx5soM2bM4PLLL2fatGlccsklLOrobi9ZsoQ5c+Zw/vnnc/yapVdccQV3330306dP55133unyuOrqakpLS3nyySe59tprmTRpUp/q7ExSbRWq6xkq1Tfbtm1j4sSJXpfhqc7+G3i6nqFSSqUSDUOllELDUCmlAA1DpZQCNAyVUgrQMFRKKUDDUCnlongt4XXvvfdy9tlnM2XKFM477zx27NgRzzIBDUOllIdiDcPp06ezbt06XnnlFS699FJuvPHG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\n", "text": [ "
" ] } ], "prompt_number": 48 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Q&A" ] }, { "cell_type": "code", "collapsed": false, "input": [ "mu, sigma = 40, 5 # mean and standard deviation\n", "s = np.random.normal(mu, sigma, 1000)\n", "si=np.round(s)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "hist = np.histogram(si, 30)\n", "print(hist)\n", "plt.bar(hist[1][1:], hist[0])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(array([ 3, 3, 7, 8, 14, 20, 20, 26, 45, 46, 60, 69, 72, 75, 76, 71, 61,\n", " 73, 68, 49, 42, 30, 22, 13, 10, 8, 1, 2, 5, 1]), array([ 26. , 26.96666667, 27.93333333, 28.9 ,\n", " 29.86666667, 30.83333333, 31.8 , 32.76666667,\n", " 33.73333333, 34.7 , 35.66666667, 36.63333333,\n", " 37.6 , 38.56666667, 39.53333333, 40.5 ,\n", " 41.46666667, 42.43333333, 43.4 , 44.36666667,\n", " 45.33333333, 46.3 , 47.26666667, 48.23333333,\n", " 49.2 , 50.16666667, 51.13333333, 52.1 ,\n", " 53.06666667, 54.03333333, 55. ]))\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 30 } ], "metadata": {} } ] }