{ "metadata": { "name": "02-MPL-NumPy-basics" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Matplotlib and NumPy basics" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n", "For more information, type 'help(pylab)'.\n" ] } ], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Basic plotting" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dat = [3, -1, 0.5, 4, 2]\n", "plot(dat)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 2, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# plotting points\n", "A = (0,1)\n", "B = (1,0)\n", "C = (2,1)\n", "\n", "# x = [A[0], B[0], C[0]]\n", "x = map(lambda i: i[0], [A,B,C])\n", "y = [i[1] for i in [A,B,C]]\n", "\n", "plot(x, y, 'bo-')\n", "axis([-0.1, 2.1, -0.1, 1.1]); # note ; at the end" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 3, "text": [ "[-0.1, 2.1, -0.1, 1.1]" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Style and plot attributes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "MATLAB like API" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = range(11)\n", "y1 = [i**2 for i in x]\n", "y2 = [i**2 for i in reversed(x)]\n", "\n", "plot(x, y1, 'ro-')\n", "plot(x, y2, 'gs--')\n", "xlabel('x')\n", "ylabel('y')\n", "title('$f(x) \\sim x^2$')\n", "grid()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Lists vs arrays" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = range(5)\n", "y = x + 4" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "can only concatenate list (not \"int\") to list", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: can only concatenate list (not \"int\") to list" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "y = 2 * x # not what we expect for a math expression\n", "y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "x = array(range(5)) # covert a list to array object\n", "y = 2*x + 1\n", "print(y)\n", "type(y)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1 3 5 7 9]\n" ] }, { "output_type": "pyout", "prompt_number": 7, "text": [ "numpy.ndarray" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "x = arange(11) # numpy built-in\n", "plot(x, x**2, 'ro-')\n", "plot(x, (10-x)**2, 'gs-')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n" } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "x = arange(-1, 1.1, 0.1) # arange works with floats\n", "plot(x, x**2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 9, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(-pi, pi, 256) # nb of points instead of sampling\n", "plot(x, sin(x), label=r'$\\sin(x)$')\n", "plot(x, cos(x), label=r'$\\cos(x)$' )\n", "legend(loc='upper left')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Note on pylab import\n", "\n", "\"`%pylan inline`\" does the following:\n", "\n", " from numpy import *\n", " from numpy.fft import *\n", " from numpy.random import *\n", " from numpy.linalg import *\n", " from matplotlib.pyplot import *\n", "\n", " # provide the recommended module abbrevs in the pylab namespace\n", " # recommended for scripts\n", " import matplotlib.pyplot as plt\n", " import numpy as np\n", " import numpy.ma as ma\n", "\n", "try `help(cos)`\n" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Efficiency" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import random\n", "\n", "def rand_gauss(N):\n", " return [random.gauss(0,1) for _ in xrange(N)]\n", "\n", "sample_size = 500\n", "\n", "d1 = rand_gauss(sample_size)\n", "\n", "d2 = np.random.randn(sample_size)\n", "\n", "subplot(1,2,1)\n", "hist(d1, label='gauss')\n", "subplot(1,2,2)\n", "hist(d2, color='red')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 11, "text": [ "(array([ 1, 6, 32, 68, 127, 118, 89, 45, 12, 2]),\n", " array([-3.36075237, -2.70074813, -2.04074388, -1.38073963, -0.72073539,\n", " -0.06073114, 0.5992731 , 1.25927735, 1.91928159, 2.57928584,\n", " 3.23929008]),\n", " )" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAD9CAYAAABDaefJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGUhJREFUeJzt3X9sVWfhx/HP4dsSNONKu9nL7AU7gVLKj4IIbEvQO8kF\nnQO7jRAgQ8KPfyQmwtRBosbyB7SDLRGy8I8GVk0M8IehTEu/wLaLM9MRBJnaaVFLaKG9GWsLZQwK\n5fn+AdwvHVB6z33ur6fvV3KTcnrPc572fvbZ6bnnnuMZY4wAAE4YkukJAADsodQBwCGUOgA4hFIH\nAIdQ6gDgEEodABzSb6mvXLlSwWBQkydPvut7r776qoYMGaKOjo74surqao0bN05lZWU6ePCg/dkC\nlpBtuKrfUl+xYoUaGhruWt7S0qJDhw7pi1/8YnxZY2Oj9uzZo8bGRjU0NGjNmjW6ceOG/RkDFpBt\nuKrfUp89e7YKCgruWv7iiy9qy5YtfZbV1dVpyZIlys/PV0lJicaOHaujR4/anS1gCdmGqxI+pl5X\nV6dQKKQpU6b0WX7u3DmFQqH4v0OhkM6ePZv8DIE0IdtwQV4iT758+bI2b96sQ4cOxZf1d5UBz/MG\ntAywLdGrX5Bt5IKB5DqhPfX//Oc/On36tCoqKvTYY4+ptbVV06dPVywWU3FxsVpaWuLPbW1tVXFx\n8X0nZvvxs5/9bNCPm0tzTeW4fmRbtm3+bhjLjbEGKqFSnzx5smKxmJqbm9Xc3KxQKKTjx48rGAxq\nwYIF2r17t3p6etTc3KxTp05p5syZiQwPZAzZhiv6LfUlS5boySefVFNTk0aNGqVdu3b1+f6df26W\nl5dr0aJFKi8v1ze/+U3t2LGDP0eRtcg2nGXSLFWbfPvttwf9uLk011SOm4FYW9+uzd8NY7kx1kDz\n5d16ctp4npfQ8SEgUZnKGNlGKg00X1wmAAAcQqkDgEModQBwCKUOAA6h1AHAIZQ6ADiEUgcAh1Dq\nAOAQSh0AHEKpA4BDKHUAcAilDgAOodQBwCGUOgA4hFIHkJTCQECe5yX0KAwEMj1tZ3E9dTiH66mn\nl+d5SvSn9pT4zcEHO66nDgCDEKUOAA6h1AHAIZQ6ADiEUgcAh1DqAOCQfkt95cqVCgaDmjx5cnzZ\nj370I02YMEEVFRV67rnndOHChfj3qqurNW7cOJWVlengwYOpmzUUCBQmfG6w53kKBAozPfWsQLbh\nqn5LfcWKFWpoaOizbO7cufrHP/6hkydPqrS0VNXV1ZKkxsZG7dmzR42NjWpoaNCaNWt048aN1M18\nkOvu7pRkEn7cXA9kG67qt9Rnz56tgoKCPssikYiGDLm52qxZs9Ta2ipJqqur05IlS5Sfn6+SkhKN\nHTtWR48eTdG0geSQbbgqL5mVd+7cqSVLlkiSzp07p8cffzz+vVAopLNnz95zvaqqqvjX4XBY4XA4\nmWlgkItGo4pGo1bHJNvINL+59l3qmzZt0tChQ7V06dL7PsfzvHsuvzP4QLI+XZ4bN25MajyyjWzg\nN9e+Sv31119XfX293nzzzfiy4uJitbS0xP/d2tqq4uJiP8MDGUO2kesSPqWxoaFBW7duVV1dnYYN\nGxZfvmDBAu3evVs9PT1qbm7WqVOnNHPmTKuTBVKJbMMF/e6pL1myREeOHNH58+c1atQobdy4UdXV\n1erp6VEkEpEkPfHEE9qxY4fKy8u1aNEilZeXKy8vTzt27Ljvn6hAppHtzMrT/Q9h3U/B8OHquHgx\nNRNyCJfezVE3/4Pw83t0//fPpXfTy/eld/2sMwh/v7dx6V0AGIQodQBwCKUOAA6h1AHAIZQ6ADiE\nUgcAh1DqAOAQSh0AHEKpA4BDKHUAcAilDgAOodQBwCGUOgA4hFIHAIdQ6hkWCBTK87yEHwBwL0nd\neBrJ6+7ulN/rogPAp7GnDgAOodQBwCGUOgA4hFIHAIdQ6gDgEEodABxCqQOAQ/ot9ZUrVyoYDGry\n5MnxZR0dHYpEIiotLdXcuXPV1dUV/151dbXGjRunsrIyHTx4MHWzRhLyfH3YKRAozPTErSLbcFW/\npb5ixQo1NDT0WVZTU6NIJKKmpibNmTNHNTU1kqTGxkbt2bNHjY2Namho0Jo1a3Tjxo3UzRw+XdfN\nDzsl9rj5ISl3kG24qt9Snz17tgoKCvos279/v5YvXy5JWr58ufbt2ydJqqur05IlS5Sfn6+SkhKN\nHTtWR48eTdG0geSQbbgq4csExGIxBYNBSVIwGFQsFpMknTt3To8//nj8eaFQSGfPnr3nGFVVVfGv\nw+GwwuFwotMA4qLRqKLRaNLjkG1kE7+5TuraLw+6uNT9vndn8IFkfbo8N27cmPSYZBuZ5jfXCZ/9\nEgwG1d7eLklqa2tTUVGRJKm4uFgtLS3x57W2tqq4uDjR4YGMIdtwQcKlvmDBAtXW1kqSamtrVVlZ\n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\nqlVWxj148KDp7e01xhizfv16s379+qTH/OCDD8y//vUvEw6Hky7169evmzFjxpjm5mbT09NjKioq\nTGNjY9Jz/MMf/mCOHz9uvdTb2trMiRMnjDHGdHd3m9LSUivz/fjjj40xxly7ds3MmjXLvPPOO0mP\n6YetbNvMs80MJ5tdm3m1mVHbubSdx1dffdUsXbrUzJ8/v9/nZexMqRdffFFbtmyxOubw4cPjX1+6\ndEmPPPKIlXEjkUj8gx+zZs1Sa2tr0mOWlZWptLQ06XGkvudQ5+fnx8+hTtbs2bNVUGD/+uQjR47U\n1KlTJUkPPfSQJkyYoHPnziU97mc/+1lJUk9Pj3p7e1VYWJj0mH7YyrbNPNvMcLLZtZlXmxm1nUub\neWxtbVV9fb1Wr179wDfkM1LqdXV1CoVCmjJlivWxf/zjH2v06NGqra3Vhg0brI+/c+dOPf3009bH\nTUYqzqFOl9OnT+vEiROaNWtW0mPduHFDU6dOVTAY1FNPPaXy8nILM0yM7WynIs+ZznAu5NVGLm3m\ncd26ddq6deuAPlWcsjsfRSIRtbe337V806ZNqq6u1sGDB+PLHvR/noGMu3nzZs2fP1+bNm3Spk2b\nVFNTo3Xr1mnXrl1Wxr0996FDh2rp0qXWxrQhVz9sdenSJS1cuFDbtm3TQw89lPR4Q4YM0V//+ldd\nuHBB8+bNUzQaVTgcTn6in2Iz2zbzbDPDqcxutufVVi5t5fF3v/udioqKNG3atAFdSyZlpX7o0KF7\nLv/73/+u5uZmVVRUSLr5Z8X06dN19OhRFRUV+R7305YuXZrQ3siDxn399ddVX1+vN99809qYtgzk\nHOpsc+3aNT3//PN64YUXVFlZaXXsz33uc/rWt76lY8eOpaTUbWbbZp5tZjiV2c3mvKYil8nm8d13\n39X+/ftVX1+vK1eu6OLFi/rOd76jX/3qV/deIakj9xbYfKO0qakp/vX27dvNCy+8YGXcAwcOmPLy\ncvPhhx9aGe9O4XDYHDt2LKkxrl27Zr70pS+Z5uZmc/XqVWtvlBpjTHNzs/U3Sm/cuGGWLVtm1q5d\na23MDz/80HR2dhpjjLl8+bKZPXu2OXz4sLXx/Ug22zbznIoM+82u7bzayqjNXKYqj9FoNHvPfrnt\nscces1bqzz//vJk0aZKpqKgwzz33nInFYlbGHTt2rBk9erSZOnWqmTp1qvnud7+b9Ji//e1vTSgU\nMsOGDTPBYNB84xvfSGq8+vp6U1paasaMGWM2b96c9PyMMWbx4sXm0UcfNUOHDjWhUMjs3LnTyrjv\nvPOO8TzPVFRUxH+nBw4cSGrM999/30ybNs1UVFSYyZMnmy1btliZazKSzbbNPNvMsI3s2sqrzYza\nzGWq8hiNRh949kvabzwNAEgdLv4GAA6h1AHAIZQ6ADiEUgcAh1DqAOAQSh0AHPJ/f25HgW9BKEQA\nAAAASUVORK5CYII=\n" } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit rand_gauss(sample_size)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000 loops, best of 3: 656 us per loop\n" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit np.random.randn(sample_size)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10000 loops, best of 3: 20.2 us per loop\n" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "NumPy: N-dimentional array object" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x_lst = range(10) # regular list\n", "x_lst[0:-1:2] # [start:stop:step]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 14, "text": [ "[0, 2, 4, 6, 8]" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "x_arr = arange(10)\n", "x_arr[0:-1:2]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 15, "text": [ "array([0, 2, 4, 6, 8])" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "print x_lst\n", "x_lst[0] = 'hi'\n", "print x_lst" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "['hi', 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "x_arr[0] = 'hi'" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "invalid literal for long() with base 10: 'hi'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mx_arr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'hi'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mValueError\u001b[0m: invalid literal for long() with base 10: 'hi'" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "x_arr[0] = 10.5 # danger zone\n", "x_arr" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 18, "text": [ "array([10, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Numpy arrays are **statically typed** and **homogeneous**. The type of the elements is determined when array is created!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def a_info(arr):\n", " print 'dtype:', arr.dtype # data type\n", " print 'nbytes:', arr.nbytes # nb of bytes\n", " print 'ndim:', arr.ndim\n", " print 'shape:', arr.shape\n", " print 'size:', arr.size\n", " \n", "a_info(x_arr)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "dtype: int64\n", "nbytes: 80\n", "ndim: 1\n", "shape: (10,)\n", "size: 10\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "len(x_arr) == x_arr.size" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 20, "text": [ "True" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "y = arange(3, dtype='float')\n", "a_info(y)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "dtype: float64\n", "nbytes: 24\n", "ndim: 1\n", "shape: (3,)\n", "size: 3\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "# type casting\n", "a_info(y.astype('complex'))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "dtype: complex128\n", "nbytes: 48\n", "ndim: 1\n", "shape: (3,)\n", "size: 3\n" ] } ], "prompt_number": 22 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Multi-dimentional array and indexing" ] }, { "cell_type": "code", "collapsed": false, "input": [ "M = array( [[2.0, 1, 3], [0.1, 0.2, 0.3]] )\n", "M" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 23, "text": [ "array([[ 2. , 1. , 3. ],\n", " [ 0.1, 0.2, 0.3]])" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "a_info(M)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "dtype: float64\n", "nbytes: 48\n", "ndim: 2\n", "shape: (2, 3)\n", "size: 6\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "M[0,0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 25, "text": [ "2.0" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "M[0] # select 1st row" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 26, "text": [ "array([ 2., 1., 3.])" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "M[1,:] # select 2d row" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 27, "text": [ "array([ 0.1, 0.2, 0.3])" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "M[:, -1] # select last column" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 28, "text": [ "array([ 3. , 0.3])" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "# assignment works the same way\n", "M[:,-1] = 100\n", "M" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 29, "text": [ "array([[ 2. , 1. , 100. ],\n", " [ 0.1, 0.2, 100. ]])" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "M[0:, 1:] # all rows, 2 last columns" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 30, "text": [ "array([[ 1. , 100. ],\n", " [ 0.2, 100. ]])" ] } ], "prompt_number": 30 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Array generation functions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print arange(-1.0, 1.0, 0.2) # low, high (excl), step" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ -1.00000000e+00 -8.00000000e-01 -6.00000000e-01 -4.00000000e-01\n", " -2.00000000e-01 -2.22044605e-16 2.00000000e-01 4.00000000e-01\n", " 6.00000000e-01 8.00000000e-01]\n" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "print linspace(-1.0, 1.0, 9) # low, high (incl), nb_of_points" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-1. -0.75 -0.5 -0.25 0. 0.25 0.5 0.75 1. ]\n" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "print zeros((3,3))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 0. 0. 0.]\n", " [ 0. 0. 0.]\n", " [ 0. 0. 0.]]\n" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "print diag((3.,2,1))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 3. 0. 0.]\n", " [ 0. 2. 0.]\n", " [ 0. 0. 1.]]\n" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "print np.random.rand(2, 4) # random numbers from a uniform distribution between [0, 1[" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 0.66800989 0.96622993 0.43213735 0.33973 ]\n", " [ 0.79521694 0.76777532 0.24617852 0.78354752]]\n" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "print np.random.randn(2, 4) # randome numbers from a normal distribution (mu=0, sigma=1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 1.00360327 2.09461226 1.1273358 0.51963957]\n", " [ 0.59788146 -0.17339674 0.8364903 1.04364158]]\n" ] } ], "prompt_number": 36 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Fancy indexing" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(-1, 1, 5)\n", "print 'x:', x\n", "\n", "c = (x >= 0)\n", "print 'c:', c\n", "print c.dtype\n", "\n", "print 'x[c]:', x[c]\n", "\n", "y = exp(x)\n", "print 'y[c]', y[c]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "x: [-1. -0.5 0. 0.5 1. ]\n", "c: [False False True True True]\n", "bool" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "x[c]: [ 0. 0.5 1. ]\n", "y[c]" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " [ 1. 1.64872127 2.71828183]\n" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "c = (x >= -0.5) * ( x <= 0.5)\n", "x[c]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 38, "text": [ "array([-0.5, 0. , 0.5])" ] } ], "prompt_number": 38 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Array methods" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def a_meth(arr):\n", " print 'min:', arr.min()\n", " print 'max:', arr.max()\n", " print 'mean:', arr.mean()\n", " print 'std:', arr.std()\n", "\n", "x = randn(100)*2.3 + 1.7\n", "a_meth(x)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "min: -3.009859938\n", "max: 7.72678056926\n", "mean: 1.65085133248\n", "std: 2.27740367094\n" ] } ], "prompt_number": 43 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Array operations" ] }, { "cell_type": "code", "collapsed": false, "input": [ "v = arange(6)\n", "print 2 * v - 5 # linear transform" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-5 -3 -1 1 3 5]\n" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "v2 = v[::-1]\n", "print v + v2 # element-wise sum" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[5 5 5 5 5 5]\n" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "print (1 - np.exp(v)) # vectorized function" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0. -1.71828183 -6.3890561 -19.08553692 -53.59815003\n", " -147.4131591 ]\n" ] } ], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "M = (rand(4,3) * 10).astype('int')\n", "print 2*M" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[12 2 18]\n", " [18 16 12]\n", " [ 6 10 16]\n", " [18 18 10]]\n" ] } ], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "v = array([0,1,2])\n", "print M * v # multiply every row by vector" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 0 1 18]\n", " [ 0 8 12]\n", " [ 0 5 16]\n", " [ 0 9 10]]\n" ] } ], "prompt_number": 68 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "File I/O" ] }, { "cell_type": "code", "collapsed": false, "input": [ "M = randn(10, 3)\n", "save('data/M.npy', M) # dump an array into a binary file (similar to MATLAB's .mat)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "N = load('data/M.npy')\n", "(N - M).sum()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 71, "text": [ "0.0" ] } ], "prompt_number": 71 }, { "cell_type": "code", "collapsed": false, "input": [ "savetxt('data/M.csv', M, fmt='%.3f', delimiter='\\t')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 76 }, { "cell_type": "code", "collapsed": false, "input": [ "!head data/M.csv" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1.036\t1.617\t-0.977\r\n", "0.600\t-1.656\t1.417\r\n", "-1.850\t0.007\t0.246\r\n", "1.088\t-0.170\t0.941\r\n", "1.316\t-1.822\t0.389\r\n", "-0.447\t1.119\t0.179\r\n", "-0.393\t-0.904\t-1.427\r\n", "1.363\t-0.968\t1.443\r\n", "1.425\t-0.509\t-0.882\r\n", "-0.031\t0.431\t0.011\r\n" ] } ], "prompt_number": 77 }, { "cell_type": "code", "collapsed": false, "input": [ "N = genfromtxt('data/M.csv')\n", "N" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 81, "text": [ "array([[ 1.036, 1.617, -0.977],\n", " [ 0.6 , -1.656, 1.417],\n", " [-1.85 , 0.007, 0.246],\n", " [ 1.088, -0.17 , 0.941],\n", " [ 1.316, -1.822, 0.389],\n", " [-0.447, 1.119, 0.179],\n", " [-0.393, -0.904, -1.427],\n", " [ 1.363, -0.968, 1.443],\n", " [ 1.425, -0.509, -0.882],\n", " [-0.031, 0.431, 0.011]])" ] } ], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "(N-M).sum()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 80, "text": [ "0.0028902802726487797" ] } ], "prompt_number": 80 } ], "metadata": {} } ] }