{ "metadata": { "celltoolbar": "Slideshow", "name": "", "signature": "sha256:3523b9bcd2c6bf7c500601c2da618ade4331aca92a27af45af8404a8a29d57a1" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Importing numpy and matplotlib" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Creating arrays" ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.array([1, 2, 3])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "array([1, 2, 3])" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "np.array([1, 2, 3], dtype=np.float32)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "array([ 1., 2., 3.], dtype=float32)" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "np.array([[1, 2, 3], [4, 5, 6]])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "array([[1, 2, 3],\n", " [4, 5, 6]])" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "np.arange(5, 10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "array([5, 6, 7, 8, 9])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "np.linspace(5, 10, 10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "array([ 5. , 5.556, 6.111, 6.667, 7.222, 7.778, 8.333, 8.889, 9.444, 10. ])" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "np.empty((3, 2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "array([[ 0., 0.],\n", " [ 0., 0.],\n", " [ 0., 0.]])" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "np.zeros((3, 2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "array([[ 0., 0.],\n", " [ 0., 0.],\n", " [ 0., 0.]])" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "np.ones((3, 2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "array([[ 1., 1.],\n", " [ 1., 1.],\n", " [ 1., 1.]])" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "np.eye(3)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "array([[ 1., 0., 0.],\n", " [ 0., 1., 0.],\n", " [ 0., 0., 1.]])" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "np.diag([1, 2, 3])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "array([[1, 0, 0],\n", " [0, 2, 0],\n", " [0, 0, 3]])" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "np.repeat(3, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "array([3, 3, 3, 3, 3])" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "np.repeat([[1, 2, 3]], 3, axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "array([[1, 2, 3],\n", " [1, 2, 3],\n", " [1, 2, 3]])" ] } ], "prompt_number": 17 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Array properties" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = np.arange(3 * 4).reshape(3, -1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "a.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "(3, 4)" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "a.size" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "12" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "a.dtype" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "dtype('int64')" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "a.nbytes" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "96" ] } ], "prompt_number": 22 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Random numbers" ] }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.seed(0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.rand(3, 4)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "array([[ 0.549, 0.715, 0.603, 0.545],\n", " [ 0.424, 0.646, 0.438, 0.892],\n", " [ 0.964, 0.383, 0.792, 0.529]])" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "np.random.randn(3, 4)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "array([[ 0.761, 0.122, 0.444, 0.334],\n", " [ 1.494, -0.205, 0.313, -0.854],\n", " [-2.553, 0.654, 0.864, -0.742]])" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(np.random.normal(10, 2.0, 1000));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(np.random.binomial(1, 0.8, 1000));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 45 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Vector to matrix conversion" ] }, { "cell_type": "code", "collapsed": false, "input": [ "v = np.arange(3)\n", "v" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "array([0, 1, 2])" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "v.reshape(-1, 1) # column matrix" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 31, "text": [ "array([[0],\n", " [1],\n", " [2]])" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "v[:, np.newaxis] # column matrix" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "array([[0],\n", " [1],\n", " [2]])" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "v.reshape(1, -1) # row vector" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "array([[0, 1, 2]])" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "v[np.newaxis, :] # row vector" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "array([[0, 1, 2]])" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "r = v[np.newaxis, :] # returns view -> no copy\n", "r[0, 0] = 10" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "r" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 36, "text": [ "array([[10, 1, 2]])" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "v" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "array([10, 1, 2])" ] } ], "prompt_number": 37 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Matrix to vector conversion" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = np.arange(3 * 4).reshape(3, -1)\n", "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "array([[ 0, 1, 2, 3],\n", " [ 4, 5, 6, 7],\n", " [ 8, 9, 10, 11]])" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "A.flatten()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "A.flatten()[0] = 10\n", "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "array([[ 0, 1, 2, 3],\n", " [ 4, 5, 6, 7],\n", " [ 8, 9, 10, 11]])" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "A.ravel()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "A.ravel()[0] = 100\n", "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "array([[100, 1, 2, 3],\n", " [ 4, 5, 6, 7],\n", " [ 8, 9, 10, 11]])" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "A.ravel()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "array([100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" ] } ], "prompt_number": 44 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Indexing" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = np.arange(10)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "a[1]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "1" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "a[[0, 5]]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "array([0, 5])" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "a[-1]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "9" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "a[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "array([0, 1, 2, 3, 4])" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "a[5:]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "array([5, 6, 7, 8, 9])" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "a[5::2]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "array([5, 7, 9])" ] } ], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "b = a[::2]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "code", "collapsed": false, "input": [ "b[2] = -1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 47, "text": [ "array([ 0, 2, -1, 6, 8])" ] } ], "prompt_number": 47 }, { "cell_type": "code", "collapsed": true, "input": [ "a" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "array([ 0, 1, 2, 3, -1, 5, 6, 7, 8, 9])" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "a[a > 5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 49, "text": [ "array([6, 7, 8, 9])" ] } ], "prompt_number": 49 }, { "cell_type": "code", "collapsed": false, "input": [ "A = np.arange(3 * 4).reshape(3, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 50 }, { "cell_type": "code", "collapsed": false, "input": [ "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 51, "text": [ "array([[ 0, 1, 2, 3],\n", " [ 4, 5, 6, 7],\n", " [ 8, 9, 10, 11]])" ] } ], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "A[1, :]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 52, "text": [ "array([4, 5, 6, 7])" ] } ], "prompt_number": 52 }, { "cell_type": "code", "collapsed": true, "input": [ "b = A.take(1, axis=0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "A.take(1, axis=1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 54, "text": [ "array([1, 5, 9])" ] } ], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 55, "text": [ "array([4, 5, 6, 7])" ] } ], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "b[0] = 10" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 57, "text": [ "array([10, 5, 6, 7])" ] } ], "prompt_number": 57 }, { "cell_type": "code", "collapsed": false, "input": [ "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 58, "text": [ "array([[ 0, 1, 2, 3],\n", " [ 4, 5, 6, 7],\n", " [ 8, 9, 10, 11]])" ] } ], "prompt_number": 58 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Operations" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = np.arange(1, 7).reshape(3,2)\n", "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 59, "text": [ "array([[1, 2],\n", " [3, 4],\n", " [5, 6]])" ] } ], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "A * 2" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "array([[ 2, 4],\n", " [ 6, 8],\n", " [10, 12]])" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "A + 2" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "array([[3, 4],\n", " [5, 6],\n", " [7, 8]])" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "v = np.array([1, 2])\n", "v" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "array([1, 2])" ] } ], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [ "A.dot(v)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "array([ 5, 11, 17])" ] } ], "prompt_number": 63 }, { "cell_type": "code", "collapsed": false, "input": [ "v.dot(v)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 64, "text": [ "5" ] } ], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "A.sum()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "21" ] } ], "prompt_number": 65 }, { "cell_type": "code", "collapsed": false, "input": [ "A.sum(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 66, "text": [ "array([ 9, 12])" ] } ], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "A.sum(axis=1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 67, "text": [ "array([ 3, 7, 11])" ] } ], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "A.prod(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 68, "text": [ "array([15, 48])" ] } ], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "A.mean(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 69, "text": [ "array([ 3., 4.])" ] } ], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "A.std(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 70, "text": [ "array([ 1.633, 1.633])" ] } ], "prompt_number": 70 }, { "cell_type": "code", "collapsed": false, "input": [ "A.min(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 71, "text": [ "array([1, 2])" ] } ], "prompt_number": 71 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Broadcasting" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 72, "text": [ "array([[1, 2],\n", " [3, 4],\n", " [5, 6]])" ] } ], "prompt_number": 72 }, { "cell_type": "code", "collapsed": false, "input": [ "# Scaling rows\n", "r = np.array([[2, 3]])\n", "A * r" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 73, "text": [ "array([[ 2, 6],\n", " [ 6, 12],\n", " [10, 18]])" ] } ], "prompt_number": 73 }, { "cell_type": "code", "collapsed": false, "input": [ "# Scaling columns\n", "c = np.array([1, 2, 3]).reshape(3, -1)\n", "A * c" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 74, "text": [ "array([[ 1, 2],\n", " [ 6, 8],\n", " [15, 18]])" ] } ], "prompt_number": 74 }, { "cell_type": "heading", "level": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "General rule" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "A (2d array): 5 x 4\n", "B (1d array): 1\n", "Result (2d array): 5 x 4\n", "\n", "A (2d array): 5 x 4\n", "B (1d array): 4\n", "Result (2d array): 5 x 4\n", "\n", "A (3d array): 15 x 3 x 5\n", "B (3d array): 15 x 1 x 5\n", "Result (3d array): 15 x 3 x 5\n", "\n", "A (3d array): 15 x 3 x 5\n", "B (2d array): 3 x 5\n", "Result (3d array): 15 x 3 x 5\n", "\n", "A (3d array): 15 x 3 x 5\n", "B (2d array): 3 x 1\n", "Result (3d array): 15 x 3 x 5" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A = np.ones((2, 3, 5))\n", "b = np.arange(3).reshape(3, 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 75 }, { "cell_type": "code", "collapsed": false, "input": [ "A" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 76, "text": [ "array([[[ 1., 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1., 1.]],\n", "\n", " [[ 1., 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1., 1.],\n", " [ 1., 1., 1., 1., 1.]]])" ] } ], "prompt_number": 76 }, { "cell_type": "code", "collapsed": false, "input": [ "b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 77, "text": [ "array([[0],\n", " [1],\n", " [2]])" ] } ], "prompt_number": 77 }, { "cell_type": "code", "collapsed": false, "input": [ "A + b" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 78, "text": [ "array([[[ 1., 1., 1., 1., 1.],\n", " [ 2., 2., 2., 2., 2.],\n", " [ 3., 3., 3., 3., 3.]],\n", "\n", " [[ 1., 1., 1., 1., 1.],\n", " [ 2., 2., 2., 2., 2.],\n", " [ 3., 3., 3., 3., 3.]]])" ] } ], "prompt_number": 78 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Performance considerations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* **C order**: rows are contiguous in memory (row-major order)\n", "* **Fortran order**: columns are contiguous in memory (column-major order)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Ac = np.ones((10, 100000), order='C') # C order\n", "Af = np.ones((10, 100000), order='F') # Fortran order" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 79 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit Ac.sum(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000 loops, best of 3: 895 \u00b5s per loop\n" ] } ], "prompt_number": 80 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit Af.sum(axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100 loops, best of 3: 1.98 ms per loop\n" ] } ], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "Ac = np.ones((100000, 10), order='C')\n", "Af = np.ones((100000, 10), order='F')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 82 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit Ac.sum(axis=1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100 loops, best of 3: 2.08 ms per loop\n" ] } ], "prompt_number": 83 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit Af.sum(axis=1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000 loops, best of 3: 886 \u00b5s per loop\n" ] } ], "prompt_number": 84 }, { "cell_type": "heading", "level": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Further readings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [NumPy notebook](http://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-2-Numpy.ipynb)\n", "* [Offical web site](http://www.numpy.org/)\n", "* [Advanced introduction to NumPy](http://www.python-course.eu/numpy.php)" ] } ], "metadata": {} } ] }