{
 "metadata": {
  "name": "",
  "signature": "sha256:7db4ead3cffea057da1899844985431c6eb23613fffcd2a706cba3fcf6761514"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The following is part of my notes on scientific computing with python:\n",
      "* [Lecture 0 - Scientific Computing with Python](http://nbviewer.ipython.org/github/diego898/scientific-python/blob/master/Lecture%200%20-%20Scientific%20Computing%20with%20Python.ipynb)\n",
      "* [Lecture 1 - NumPy](http://nbviewer.ipython.org/github/diego898/scientific-python/blob/master/Lecture%201%20-%20NumPy.ipynb)\n",
      "* [Lecture 2 - SciPy](http://nbviewer.ipython.org/github/diego898/scientific-python/blob/master/Lecture%202%20-%20SciPy.ipynb)\n",
      "* [Lecture 3 - Matplotlib](http://nbviewer.ipython.org/github/diego898/scientific-python/blob/master/Lecture%203%20-%20Matplotlib.ipynb)"
     ]
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Notbook Setup"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# load numpy\n",
      "import numpy as np\n",
      "\n",
      "# load scipy\n",
      "import scipy as sp\n",
      "\n",
      "# load data visualization\n",
      "import matplotlib.pyplot as plt  # the tidy way \n",
      "\n",
      "# allows embedding of plots in the notebook\n",
      "%matplotlib inline \n",
      "\n",
      "# load image processing\n",
      "from IPython.display import Image"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "NumPy"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "NumPy is the fundamental package for scientific computing with Python.\n",
      "\n",
      "**Python:** \n",
      "* high-level number objects: integers, floating point\n",
      "* containers: lists (costless insertion and append), dictionaries (fast lookup)\n",
      "\n",
      "**Numpy:**\n",
      "* extension package to Python for multi-dimensional arrays\n",
      "* closer to hardware (efficiency)\n",
      "* designed for scientific computation (convenience)\n",
      "* Also known as array oriented computing"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "NumPy Arrays"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Numpy arrays are the standard tool for scienfitic computing. Here are some differences between lists, which we're all familiar with, and ndarrays:\n",
      "\n",
      "* Python lists are very general. They can contain any kind of object. They are dynamically typed. They do not support mathematical functions such as matrix and dot multiplications, etc. Implementating such functions for Python lists would not be very efficient because of the dynamic typing.\n",
      "* Numpy arrays are **statically typed** and **homogeneous**. The type of the elements is determined when array is created.\n",
      "* Numpy arrays are memory efficient.\n",
      "* Because of the static typing, fast implementation of mathematical functions such as multiplication and addition of numpy arrays can be implemented in a compiled language (C and Fortran is used).\n",
      "* Using the dtype (data type) property of an ndarray, we can see what type the data of an array has:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.array([0,1,2,3])\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 3,
       "text": [
        "array([0, 1, 2, 3])"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# old way \n",
      "L = range(1000)\n",
      "%timeit [i**2 for i in L]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10000 loops, best of 3: 73.9 \u00b5s per loop\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# memory and computation efficient using numpy\n",
      "a = np.arange(1000)\n",
      "%timeit a**2"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100000 loops, best of 3: 2.08 \u00b5s per loop\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# access documentation - popup\n",
      "np.array?"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# search numpy\n",
      "np.lookfor('create array')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Search results for 'create array'\n",
        "---------------------------------\n",
        "numpy.array\n",
        "    Create an array.\n",
        "numpy.memmap\n",
        "    Create a memory-map to an array stored in a *binary* file on disk.\n",
        "numpy.diagflat\n",
        "    Create a two-dimensional array with the flattened input as a diagonal.\n",
        "numpy.fromiter\n",
        "    Create a new 1-dimensional array from an iterable object.\n",
        "numpy.partition\n",
        "    Return a partitioned copy of an array.\n",
        "numpy.ma.diagflat\n",
        "    Create a two-dimensional array with the flattened input as a diagonal.\n",
        "numpy.ctypeslib.as_array\n",
        "    Create a numpy array from a ctypes array or a ctypes POINTER.\n",
        "numpy.ma.make_mask\n",
        "    Create a boolean mask from an array.\n",
        "numpy.ctypeslib.as_ctypes\n",
        "    Create and return a ctypes object from a numpy array.  Actually\n",
        "numpy.ma.mrecords.fromarrays\n",
        "    Creates a mrecarray from a (flat) list of masked arrays.\n",
        "numpy.lib.format.open_memmap\n",
        "    Open a .npy file as a memory-mapped array.\n",
        "numpy.ma.MaskedArray.__new__\n",
        "    Create a new masked array from scratch.\n",
        "numpy.lib.arrayterator.Arrayterator\n",
        "    Buffered iterator for big arrays.\n",
        "numpy.ma.mrecords.fromtextfile\n",
        "    Creates a mrecarray from data stored in the file `filename`.\n",
        "numpy.oldnumeric.ma.fromfunction\n",
        "    apply f to s to create array as in umath.\n",
        "numpy.oldnumeric.ma.masked_object\n",
        "    Create array masked where exactly data equal to value\n",
        "numpy.oldnumeric.ma.masked_values\n",
        "    Create a masked array; mask is nomask if possible.\n",
        "numpy.asarray\n",
        "    Convert the input to an array.\n",
        "numpy.ndarray\n",
        "    ndarray(shape, dtype=float, buffer=None, offset=0,\n",
        "numpy.recarray\n",
        "    Construct an ndarray that allows field access using attributes.\n",
        "numpy.chararray\n",
        "    chararray(shape, itemsize=1, unicode=False, buffer=None, offset=0,\n",
        "numpy.pad\n",
        "    Pads an array.\n",
        "numpy.sum\n",
        "    Sum of array elements over a given axis.\n",
        "numpy.asanyarray\n",
        "    Convert the input to an ndarray, but pass ndarray subclasses through.\n",
        "numpy.copy\n",
        "    Return an array copy of the given object.\n",
        "numpy.diag\n",
        "    Extract a diagonal or construct a diagonal array.\n",
        "numpy.load\n",
        "    Load an array(s) or pickled objects from .npy, .npz, or pickled files.\n",
        "numpy.sort\n",
        "    Return a sorted copy of an array.\n",
        "numpy.array_equiv\n",
        "    Returns True if input arrays are shape consistent and all elements equal.\n",
        "numpy.dtype\n",
        "    Create a data type object.\n",
        "numpy.choose\n",
        "    Construct an array from an index array and a set of arrays to choose from.\n",
        "numpy.nditer\n",
        "    Efficient multi-dimensional iterator object to iterate over arrays.\n",
        "numpy.swapaxes\n",
        "    Interchange two axes of an array.\n",
        "numpy.full_like\n",
        "    Return a full array with the same shape and type as a given array.\n",
        "numpy.ones_like\n",
        "    Return an array of ones with the same shape and type as a given array.\n",
        "numpy.empty_like\n",
        "    Return a new array with the same shape and type as a given array.\n",
        "numpy.zeros_like\n",
        "    Return an array of zeros with the same shape and type as a given array.\n",
        "numpy.asarray_chkfinite\n",
        "    Convert the input to an array, checking for NaNs or Infs.\n",
        "numpy.diag_indices\n",
        "    Return the indices to access the main diagonal of an array.\n",
        "numpy.ma.choose\n",
        "    Use an index array to construct a new array from a set of choices.\n",
        "numpy.chararray.tolist\n",
        "    a.tolist()\n",
        "numpy.matlib.rand\n",
        "    Return a matrix of random values with given shape.\n",
        "numpy.savez_compressed\n",
        "    Save several arrays into a single file in compressed ``.npz`` format.\n",
        "numpy.ma.empty_like\n",
        "    Return a new array with the same shape and type as a given array.\n",
        "numpy.ma.make_mask_none\n",
        "    Return a boolean mask of the given shape, filled with False.\n",
        "numpy.ma.mrecords.fromrecords\n",
        "    Creates a MaskedRecords from a list of records.\n",
        "numpy.around\n",
        "    Evenly round to the given number of decimals.\n",
        "numpy.source\n",
        "    Print or write to a file the source code for a Numpy object.\n",
        "numpy.diagonal\n",
        "    Return specified diagonals.\n",
        "numpy.histogram2d\n",
        "    Compute the bi-dimensional histogram of two data samples.\n",
        "numpy.fft.ifft\n",
        "    Compute the one-dimensional inverse discrete Fourier Transform.\n",
        "numpy.fft.ifftn\n",
        "    Compute the N-dimensional inverse discrete Fourier Transform.\n",
        "numpy.busdaycalendar\n",
        "    A business day calendar object that efficiently stores information"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# wildcard search\n",
      "np.con*?"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# 1D array\n",
      "a = np.array([0,1,2,3])\n",
      "print a.ndim\n",
      "print a.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1\n",
        "(4L,)\n"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# 2D\n",
      "b = np.array([[0, 1, 2] , [3, 4, 5]])\n",
      "print b.ndim\n",
      "print b.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "2\n",
        "(2L, 3L)\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# 3D\n",
      "c = np.array([[[1], [2]], [[3], [4]]])\n",
      "c"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 11,
       "text": [
        "array([[[1],\n",
        "        [2]],\n",
        "\n",
        "       [[3],\n",
        "        [4]]])"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 12,
       "text": [
        "(2L, 2L, 1L)"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# creating arrays\n",
      "a = np.arange(10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 13,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b = np.arange(1,9,2)\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 14,
       "text": [
        "array([1, 3, 5, 7])"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c = np.linspace(0,1,6) # start,stop,number of points\n",
      "c"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 15,
       "text": [
        "array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ])"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.ones((3,3)) # note the strange way to enter it! (3,3) is entered as a tuple!\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 16,
       "text": [
        "array([[ 1.,  1.,  1.],\n",
        "       [ 1.,  1.,  1.],\n",
        "       [ 1.,  1.,  1.]])"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b = np.zeros((2,2))\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 17,
       "text": [
        "array([[ 0.,  0.],\n",
        "       [ 0.,  0.]])"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c = np.eye(3)\n",
      "c"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "array([[ 1.,  0.,  0.],\n",
        "       [ 0.,  1.,  0.],\n",
        "       [ 0.,  0.,  1.]])"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "d = np.diag(np.array([0,1,2,3]))\n",
      "d"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 19,
       "text": [
        "array([[0, 0, 0, 0],\n",
        "       [0, 1, 0, 0],\n",
        "       [0, 0, 2, 0],\n",
        "       [0, 0, 0, 3]])"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.random.rand(4,2) # uniform [0,1]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 20,
       "text": [
        "array([[ 0.84747313,  0.21853345],\n",
        "       [ 0.59142407,  0.96509551],\n",
        "       [ 0.1320055 ,  0.08128184],\n",
        "       [ 0.84485094,  0.76080588]])"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.random.randn(5)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 21,
       "text": [
        "array([ 0.68053198, -0.91925977, -0.01203956, -2.13515203, -0.1439533 ])"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# complex\n",
      "np.array([1+2j, 3+4j])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 22,
       "text": [
        "array([ 1.+2.j,  3.+4.j])"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# strings\n",
      "np.array(['Bonjour', 'hello'])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 23,
       "text": [
        "array(['Bonjour', 'hello'], \n",
        "      dtype='|S7')"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# load data visualization\n",
      "import matplotlib.pyplot as plt  # the tidy way"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 24
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.linspace(1,10,10)\n",
      "b = np.linspace(2,20,10)\n",
      "plt.plot(a,b,'o') # points\n",
      "plt.plot(a,b) # line (matlab's \"hold\" seems to already be active? not sure if this is only an ipython thing)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 25,
       "text": [
        "[<matplotlib.lines.Line2D at 0x8043198>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x8043400>"
       ]
      }
     ],
     "prompt_number": 25
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "image = np.random.rand(30, 30)\n",
      "plt.imshow(image, cmap=plt.cm.hot)    \n",
      "plt.colorbar()    "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 26,
       "text": [
        "<matplotlib.colorbar.Colorbar instance at 0x00000000080C4648>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nP/Z1WXrKtYVf/uVf5ujo6KHX/umf/olPfvKTAHzyk5/ki1/84lM/Jni65+qZZ57hgx/8IADz+Zyf\n/dmf5cUXX3zq5+oHHRc8/WvrJ9HedLB68cUX+amf+qmLn+/evXvxhT5NU0rxG7/xG3z4wx/mb/7m\nb5724VzYyy+/zJ07dwC4c+cOL7/88lM+IrHPf/7zPP/883zqU5964uHWVfvOd77DCy+8wC/+4i/+\nWJ2r/XH90i/9EvDjc75+kuxNB6sftV/jSdm//uu/8sILL/DlL3+Zv/7rv+Yb3/jG0z6kV5lS6sfi\n/P3RH/0R3/72t/n3f/93nn32WT796U8/lePYbrd87GMf43Of+xyLxeKhf3ua52q73fK7v/u7fO5z\nn2M+n//YnK+fNHvTweqd73znQ3r23/3ud7l79+6b/bGvac8++ywAt27d4nd+53f45je/+ZSPSOzO\nnTvcu3cPgJdeeonbt28/5SOC27dvX4DBH/7hHz6VczVNEx/72Mf4xCc+wW//9m8DPx7nan9cv/d7\nv3dxXD8O5+sn0d50sPrwhz/Mf/7nf/Kd73wH5xx///d/z0c/+tE3+2N/qHVdx2azAWC32/Ev//Iv\nD1W/nqZ99KMf5Qtf+AIAX/jCFy5ugKdpL7300sX+P/zDPzzxc5VS4lOf+hQ/93M/xx//8R9fvP60\nz9UPOq6nfb5+Yu1JZPG/9KUvpfe85z3pXe96V/rzP//zJ/GRP9T+67/+Kz3//PPp+eefT+9973uf\n2jF9/OMfT88++2wqiiLdvXs3/d3f/V06OTlJv/7rv57e/e53p4985CPp7OzsqR7T3/7t36ZPfOIT\n6f3vf3/6wAc+kH7rt34r3bt374ke0ze+8Y2klErPP/98+uAHP5g++MEPpi9/+ctP/Vx9v+P60pe+\n9NTP10+qXY/bXNu1Xdtbwq472K/t2q7tLWHXYHVt13Ztbwm7Bqtru7Zre0vYNVhd27Vd21vCrsHq\n2q7t2t4Sdg1W13Zt1/aWsGuwurZru7a3hF2D1bVd27W9Jez/AqEIx+5Ph3OIAAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x8293e10>"
       ]
      }
     ],
     "prompt_number": 26
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# indexing and slicing\n",
      "a = np.arange(10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 27,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 27
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[0],a[2],a[-1]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 28,
       "text": [
        "(0, 2, 9)"
       ]
      }
     ],
     "prompt_number": 28
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# reversing an array\n",
      "a[::-1] # go from start to end by -1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 29,
       "text": [
        "array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])"
       ]
      }
     ],
     "prompt_number": 29
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# multidimensional arrays are tuples of ints\n",
      "a = np.random.rand(3,3) # notice there is no tuple size specification here! strange!\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 30,
       "text": [
        "array([[ 0.14312807,  0.53999226,  0.75505203],\n",
        "       [ 0.40060085,  0.43943795,  0.9280733 ],\n",
        "       [ 0.64114899,  0.87781988,  0.39220377]])"
       ]
      }
     ],
     "prompt_number": 30
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print a[1,1] # 2nd row, 2nd column\n",
      "print a[2,1] # 3rd row, 2nd column\n",
      "print a[1] # 2nd row\n",
      "print a[:,2] # return 3rd column - as a row vector?"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "0.439437950863\n",
        "0.877819883543\n",
        "[ 0.40060085  0.43943795  0.9280733 ]\n",
        "[ 0.75505203  0.9280733   0.39220377]\n"
       ]
      }
     ],
     "prompt_number": 31
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# slicing\n",
      "a = np.arange(11,21)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 32,
       "text": [
        "array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])"
       ]
      }
     ],
     "prompt_number": 32
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[:4]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 33,
       "text": [
        "array([11, 12, 13, 14])"
       ]
      }
     ],
     "prompt_number": 33
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[3:]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 34,
       "text": [
        "array([14, 15, 16, 17, 18, 19, 20])"
       ]
      }
     ],
     "prompt_number": 34
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[::3]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 35,
       "text": [
        "array([11, 14, 17, 20])"
       ]
      }
     ],
     "prompt_number": 35
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.arange(10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 36,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 36
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# slicing and assigning\n",
      "a[5:] = 10\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 37,
       "text": [
        "array([ 0,  1,  2,  3,  4, 10, 10, 10, 10, 10])"
       ]
      }
     ],
     "prompt_number": 37
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b = np.arange(5)\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 38,
       "text": [
        "array([0, 1, 2, 3, 4])"
       ]
      }
     ],
     "prompt_number": 38
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[5:] = b[::-1]\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 39,
       "text": [
        "array([0, 1, 2, 3, 4, 4, 3, 2, 1, 0])"
       ]
      }
     ],
     "prompt_number": 39
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Note:** slicing operations create **views** on the original array - a way to view its data. The original array is **not** copied in memory when this occurs. **Modifying a view, modifies the original array!**"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.arange(10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 40,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 40
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b = a[::2]\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 41,
       "text": [
        "array([0, 2, 4, 6, 8])"
       ]
      }
     ],
     "prompt_number": 41
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b[0] = 12\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 42,
       "text": [
        "array([12,  2,  4,  6,  8])"
       ]
      }
     ],
     "prompt_number": 42
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a # a is now modified!!"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 43,
       "text": [
        "array([12,  1,  2,  3,  4,  5,  6,  7,  8,  9])"
       ]
      }
     ],
     "prompt_number": 43
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We must force a **copy** to be made when we want one (taking up memory). This behavior allows you to save memory and time! (example given in docs)"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.arange(10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 44,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 44
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c = a[::2].copy() # forces the copy\n",
      "c[0] = 12\n",
      "a # a remains unchanged"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 45,
       "text": [
        "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
       ]
      }
     ],
     "prompt_number": 45
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Note:**  Numpy arrays can be indexed with *slices*, but also with boolean or integer arrays **(masks)**. This method is called *fancy indexing*. It creates **copies** not views."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# fancy indexing\n",
      "np.random.seed(3)\n",
      "a = np.random.random_integers(0, 20, 15)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 46,
       "text": [
        "array([10,  3,  8,  0, 19, 10, 11,  9, 10,  6,  0, 20, 12,  7, 14])"
       ]
      }
     ],
     "prompt_number": 46
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "(a % 3 == 0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 47,
       "text": [
        "array([False,  True, False,  True, False, False, False,  True, False,\n",
        "        True,  True, False,  True, False, False], dtype=bool)"
       ]
      }
     ],
     "prompt_number": 47
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mask = (a % 3 == 0)\n",
      "extract_from_a = a[mask] # or,  a[a%3==0]\n",
      "extract_from_a           # extract a sub-array with the mask"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 48,
       "text": [
        "array([ 3,  0,  9,  6,  0, 12])"
       ]
      }
     ],
     "prompt_number": 48
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# index mask can be converted to position using `where` function\n",
      "indeces = np.where(mask)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 49
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "extract_from_a[0] = 4\n",
      "extract_from_a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 50,
       "text": [
        "array([ 4,  0,  9,  6,  0, 12])"
       ]
      }
     ],
     "prompt_number": 50
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a # a is unchanged!"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 51,
       "text": [
        "array([10,  3,  8,  0, 19, 10, 11,  9, 10,  6,  0, 20, 12,  7, 14])"
       ]
      }
     ],
     "prompt_number": 51
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# indexing with arrays of integers\n",
      "a = np.arange(0, 100, 10)\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 52,
       "text": [
        "array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])"
       ]
      }
     ],
     "prompt_number": 52
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "indeces_we_want = [2,3,2,4,2] # repeated indices!\n",
      "a[indeces_we_want]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 53,
       "text": [
        "array([20, 30, 20, 40, 20])"
       ]
      }
     ],
     "prompt_number": 53
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a[[9,7]] = 34 # assigning values using this indexing - note they can be out of order!\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 54,
       "text": [
        "array([ 0, 10, 20, 30, 40, 50, 60, 34, 80, 34])"
       ]
      }
     ],
     "prompt_number": 54
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Operations on NumPy Arrays"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# **Note:** Try to always use numpy array operations. There much faster then native python:\n",
      "a = np.arange(10000)\n",
      "%timeit a + 1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "100000 loops, best of 3: 12.8 \u00b5s per loop\n"
       ]
      }
     ],
     "prompt_number": 55
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "l = range(10000)\n",
      "%timeit [i+1 for i in l]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1000 loops, best of 3: 484 \u00b5s per loop\n"
       ]
      }
     ],
     "prompt_number": 56
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**NOTE:** Array multiplication is **not** matrix multiplication!!!!"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c = np.ones((3,3)) * 3\n",
      "d = np.ones((3,4)) * 2\n",
      "c * d # NOT MATRIX MULTIPLICATION"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "ValueError",
       "evalue": "operands could not be broadcast together with shapes (3,3) (3,4) ",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
        "\u001b[1;32m<ipython-input-57-e88232272fbe>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mones\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mones\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mc\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0md\u001b[0m \u001b[1;31m# NOT MATRIX MULTIPLICATION\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
        "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (3,3) (3,4) "
       ]
      }
     ],
     "prompt_number": 57
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c.dot(d) # THIS IS MATRIX MULTIPLICATION"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Note:** We can also change their type to the `matrix` type, where the typical operands *are* using matrix algebra."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "V = matrix(c)\n",
      "B = matrix(d)\n",
      "type(V)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "V*B # this IS matrix algebra"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "v1 = arange(5)\n",
      "v = matrix(v1).T  # make it a column vector\n",
      "v.T*v # inner product"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Matrix vs Ndarray"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Numpy matrices are **strictly** 2-dimensional, while numpy arrays (ndarrays) are N-dimensional. Matrix objects are a subclass of ndarray, so they inherit all the attributes and methods of ndarrays.\n",
      "\n",
      "The main advantage of numpy matrices is that *they provide a convenient notation for matrix multiplication: if `a` and `b` are matrices, then `a*b` is their matrix product.*"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.mat('4 3; 2 1')\n",
      "b = np.mat('1 2; 3 4')\n",
      "print(a)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(a*b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Both matrix objects and ndarrays have `.T` to return the transpose, but matrix objects also have `.H` for the conjugate transpose, and `.I` for the inverse.\n",
      "\n",
      "In contrast, numpy arrays *consistently abide by the rule that operations are applied element-wise.* Thus, if `a` and `b` are numpy arrays, then `a*b` is the array formed by multiplying the components element-wise:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c = np.array([[4, 3], [2, 1]])\n",
      "d = np.array([[1, 2], [3, 4]])\n",
      "print(c*d)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To obtain the result of matrix multiplication, you use `np.dot` :"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(np.dot(c,d))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The `**` operator also behaves differently:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(a**2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(c**2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Since `a` is a matrix, `a**2` returns the matrix product `a*a`. Since `c` is an ndarray, `c**2` returns an ndarray with each component squared element-wise.\n",
      "\n",
      "There are other technical differences between matrix objects and ndarrays (having to do with np.ravel, item selection and sequence behavior).\n",
      "\n",
      "The main advantage of numpy arrays is that they are more general than 2-dimensional matrices. What happens when you want a 3-dimensional array? Then you have to use an ndarray, not a matrix object. Thus, learning to use matrix objects is more work -- you have to learn matrix object operations, and ndarray operations.\n",
      "\n",
      "Writing a program that uses both matrices and arrays makes your life difficult because you have to keep track of what type of object your variables are, lest multiplication return something you don't expect.\n",
      "\n",
      "In contrast, if you stick solely with ndarrays, then you can do everything matrix objects can do, and more, except with slightly different functions/notation.\n",
      "\n",
      "If you are willing to give up the visual appeal of numpy matrix product notation, then I think numpy arrays are definitely the way to go."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# array comparisons\n",
      "a = np.array([1, 2, 3, 4])\n",
      "b = np.array([4, 2, 2, 4])\n",
      "a == b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a > b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# array wise comparsions\n",
      "a = np.array([1, 2, 3, 4])\n",
      "b = np.array([4, 2, 2, 4])\n",
      "c = np.array([1, 2, 3, 4])\n",
      "np.array_equal(a, b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.array_equal(a, c)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# logical operations\n",
      "a = np.array([1, 1, 0, 0], dtype=bool)\n",
      "b = np.array([1, 0, 1, 0], dtype=bool)\n",
      "np.logical_or(a, b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.logical_and(a, b)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# sin/log/etc.\n",
      "a = np.arange(5)\n",
      "np.sin(a)\n",
      "np.log(a)\n",
      "np.exp(a)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# upper triangular\n",
      "a = np.triu([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1) # np.triu?\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# transpose\n",
      "a.T"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**NOTE:** The transposition is a **view**. As a results, the following code is **wrong** and will **not** make a matrix symmetric:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# tranpose is a view!\n",
      "a += a.T"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = np.array([1, 2, 3, 4])\n",
      "np.sum(x) # or x.sum()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# sum by rows\n",
      "x = np.array([[1, 1], [2, 2]])\n",
      "x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# axis specification\n",
      "Image(url='https://scipy-lectures.github.io/_images/reductions.png')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.sum(axis=0)   # columns (first dimension)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x[:, 0].sum(), x[:, 1].sum() # ugly"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.sum(axis=1)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x[0, :].sum(), x[1, :].sum()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# higher dimensions\n",
      "x = np.random.rand(4, 2, 2)\n",
      "x"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.sum(axis=2)[0, 1]     "
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#extrema\n",
      "x = np.array([1, 3, 2])\n",
      "x.max()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.argmax()  # index of max"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# logical operations\n",
      "np.all([True, True, False]) # and"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.any([True, True, False]) # or"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a = np.zeros((100,100))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# masking/comparisons\n",
      "np.any(a != 0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.all(a == a)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# basic stats\n",
      "x = np.array([1,2,3,1])\n",
      "y = np.array([[1, 2, 3], [5, 6, 1]])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.mean()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.median(x)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.median(y,axis=-1) # last axis"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x.std()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Copy vs Deep Copy"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To achieve high performance, assignments in Python usually do not copy the underlaying objects. This is important for example when objects are passed between functions, to avoid an excessive amount of memory copying when it is not necessary (techincal term: pass by reference)."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "A = array([[1, 2], [3, 4]])\n",
      "A"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "B = A  # now B is referring to the same array data as A \n",
      "B[0,0] = 10  # changing B affects A\n",
      "B"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "A"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "If we want to avoid this behavior, so that when we get a new completely independent object B copied from A, then we need to do a so-called \"deep copy\" using the function `copy`:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "B = copy(A)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "B[0,0] = -5  # now, if we modify B, A is not affected\n",
      "B"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "A"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Vectorizing Functions"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To get good performance we should try to **avoid looping over elements** in our vectors and matrices, and instead use vectorized algorithms. The first step in converting a scalar algorithm to a vectorized algorithm is to make sure that the functions we write work with vector inputs."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def Theta(x):\n",
      "    \"\"\"\n",
      "    Scalar implemenation of the Heaviside step function.\n",
      "    \"\"\"\n",
      "    if x >= 0:\n",
      "        return 1\n",
      "    else:\n",
      "        return 0"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Theta(array([-3,-2,-1,0,1,2,3]))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "OK, that didn't work because we didn't write the Theta function so that it can handle with vector input...\n",
      "\n",
      "To get a vectorized version of Theta we can use the Numpy function vectorize. In many cases it can automatically vectorize a function:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Theta_vec = vectorize(Theta)\n",
      "Theta_vec(array([-3,-2,-1,0,1,2,3]))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We can also implement the function to accept vector input from the beginning (requires more effort but might give better performance):"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def Theta(x):\n",
      "    \"\"\"\n",
      "    Vector-aware implemenation of the Heaviside step function.\n",
      "    \"\"\"\n",
      "    return 1 * (x >= 0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Theta(array([-3,-2,-1,0,1,2,3]))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# still works for scalars as well\n",
      "Theta(-1.2), Theta(2.6)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "vectorize?"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Example: Diffusion"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let us consider a simple 1D random walk process: at each time step a walker jumps right or left with equal probability.\n",
      "We are interested in finding the typical distance from the origin of a random walker after `t` jumps. We are going to simulate many \u201cwalkers\u201d to find this law, and we are going to do so using array computing: we are going to create a 2D array with the \u201cstories\u201d (each walker has a story) in one direction, and the time in the other:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "n_stories = 1000 # num rows/walkers\n",
      "t_max = 200      # num col/time to follow walker"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# randomly choose all the steps (1 or -1) of the walk:\n",
      "time = np.arange(t_max)\n",
      "steps = 2 * np.random.random_integers(0, 1, (n_stories, t_max)) - 1 # generate random 0:1, shift to 0:2, and finally -1:1\n",
      "np.unique(steps) # verify all steps are between -1 and 1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# build the walks by summing steps along time (col)\n",
      "positions = np.cumsum(steps, axis=1) # axis = 1: dimension of time\n",
      "Image(url='https://scipy-lectures.github.io/_images/random_walk_schema.png')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "sq_distance = positions**2\n",
      "mean_sq_distance = np.mean(sq_distance, axis=0) # calc mean \"story\" (rows)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# plot results\n",
      "plt.figure(figsize=(4, 3)) \n",
      "plt.plot(time, np.sqrt(mean_sq_distance), 'g.', time, np.sqrt(time), 'y-') \n",
      "plt.xlabel(r\"$t$\") \n",
      "plt.ylabel(r\"$\\sqrt{\\langle (\\delta x)^2 \\rangle}$\") "
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# skipped section on broadcasting - revist it:\n",
      "Image(url='https://scipy-lectures.github.io/_images/numpy_broadcasting.png')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# array flattening\n",
      "a = np.array([[1, 2, 3], [4, 5, 6]])\n",
      "a"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a.ravel() # ravel?"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a.T"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "a.T.ravel()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# reshaping\n",
      "a.shape"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b = a.ravel()\n",
      "b"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "b.reshape((2,3))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# not specifying the other dimension (give it -1) - its infered!\n",
      "a.reshape((2,-1))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Note:** `ndarray.reshape` may return a view (cf help(np.reshape))), or copy - To understand this you need to learn more about the memory layout of a numpy array."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# adding an axis\n",
      "z = np.array([1, 2, 3])\n",
      "z"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "z[:, np.newaxis]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "z[np.newaxis, :]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Misc Operations"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# polynomials\n",
      "p = np.poly1d([3, 2, -1]) #3x^2 + 2x - 1\n",
      "p(0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "p.roots"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "p.order"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = np.linspace(0,1,20)\n",
      "y = np.cos(x) + 0.3*np.random.rand(20)\n",
      "p = np.poly1d(np.polyfit(x,y,3))\n",
      "t = np.linspace(0,1,200)\n",
      "plt.plot(x, y, 'o', t, p(t), '-')   "
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# 3x^2+2x-1\n",
      "p = np.polynomial.Polynomial([-1, 2, 3]) # coefs in different order!!!"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Chebyshev basis\n",
      "x = np.linspace(-1, 1, 2000)\n",
      "y = np.cos(x) + 0.3*np.random.rand(2000)\n",
      "p = np.polynomial.Chebyshev.fit(x, y, 90)\n",
      "t = np.linspace(-1, 1, 200)\n",
      "plt.plot(x, y, 'r.')   \n",
      "plt.plot(t, p(t), 'k-', lw=3)   "
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# loading text files\n",
      "data = np.loadtxt('files/data.txt')\n",
      "data"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 58,
       "text": [
        "array([[  1900.,  30000.,   4000.,  48300.],\n",
        "       [  1901.,  47200.,   6100.,  48200.],\n",
        "       [  1902.,  70200.,   9800.,  41500.],\n",
        "       [  1903.,  77400.,  35200.,  38200.]])"
       ]
      }
     ],
     "prompt_number": 58
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# np.savetxt('myfile.txt',data)\n",
      "# scipy.io.loadmat, scipy.io.savemat"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Lena example\n",
      "from scipy import misc\n",
      "lena = misc.lena()\n",
      "plt.imshow(lena)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.imshow(lena, cmap=plt.cm.gray)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "crop_lena = lena[30:-30,30:-30]\n",
      "y, x = np.ogrid[0:512,0:512] # x and y indices of pixels\n",
      "centerx, centery = (256, 256) # center of the image\n",
      "mask = ((y - centery)**2 + (x - centerx)**2) > 230**2 # circle\n",
      "lena[mask] = 0\n",
      "plt.imshow(lena)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}