{"worksheets": [{"cells": [{"source": ["# numpy: Introduction"], "cell_type": "markdown", "metadata": {}}, {"source": ["Let's import the `numpy` module."], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 1, "input": ["import numpy as np"], "metadata": {}, "collapsed": false, "outputs": [], "cell_type": "code"}, {"language": "python", "prompt_number": 3, "input": ["n = 10 # CHANGE ME\n", "a1 = list(range(n))\n", "a2 = np.arange(n)\n", "\n", "if n <= 10:\n", " print(a1)\n", " print(a2)"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "[0 1 2 3 4 5 6 7 8 9]\n"], "stream": "stdout", "output_type": "stream"}], "cell_type": "code"}, {"language": "python", "prompt_number": 4, "input": ["%timeit [i**2 for i in a1]"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["100000 loops, best of 3: 2.36 \u00b5s per loop\n"], "stream": "stdout", "output_type": "stream"}], "cell_type": "code"}, {"language": "python", "prompt_number": 5, "input": ["%timeit a2**2"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["1000000 loops, best of 3: 1.06 \u00b5s per loop\n"], "stream": "stdout", "output_type": "stream"}], "cell_type": "code"}, {"source": ["Numpy Arrays: much less flexible, but:\n", "\n", "* much faster\n", "* less memory"], "cell_type": "markdown", "metadata": {}}, {"source": ["---\n", "\n", "Ways to create a numpy array:\n", "\n", "* Casting from a list"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 6, "input": ["np.array([1,2,3])"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([1, 2, 3])"], "output_type": "pyout", "prompt_number": 6, "metadata": {}}], "cell_type": "code"}, {"source": ["* `linspace`"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 7, "input": ["np.linspace(-1, 1, 10)"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([-1. , -0.77777778, -0.55555556, -0.33333333, -0.11111111,\n", " 0.11111111, 0.33333333, 0.55555556, 0.77777778, 1. ])"], "output_type": "pyout", "prompt_number": 7, "metadata": {}}], "cell_type": "code"}, {"source": ["* `zeros`"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 8, "input": ["np.zeros((10,10), np.float64)"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])"], "output_type": "pyout", "prompt_number": 8, "metadata": {}}], "cell_type": "code"}, {"source": ["---\n", "\n", "Operations on arrays propagate to all elements:"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 9, "input": ["\n", "a = np.array([1.2, 3, 4])\n", "b = np.array([0.5, 0, 1])"], "metadata": {}, "collapsed": false, "outputs": [], "cell_type": "code"}, {"source": ["Addition, multiplication, power, .. are all elementwise:"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 10, "input": ["a+b"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([ 1.7, 3. , 5. ])"], "output_type": "pyout", "prompt_number": 10, "metadata": {}}], "cell_type": "code"}, {"language": "python", "prompt_number": 11, "input": ["a*b"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([ 0.6, 0. , 4. ])"], "output_type": "pyout", "prompt_number": 11, "metadata": {}}], "cell_type": "code"}, {"language": "python", "prompt_number": 12, "input": ["a**b"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["array([ 1.09544512, 1. , 4. ])"], "output_type": "pyout", "prompt_number": 12, "metadata": {}}], "cell_type": "code"}, {"source": ["Matrix multiplication is `np.dot(A, B)` for two 2D arrays."], "cell_type": "markdown", "metadata": {}}, {"source": ["---\n", "\n", "Numpy arrays have two (most) important attributes:"], "cell_type": "markdown", "metadata": {}}, {"language": "python", "prompt_number": 13, "input": ["a = np.random.rand(5, 4, 3)\n", "a.shape"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["(5, 4, 3)"], "output_type": "pyout", "prompt_number": 13, "metadata": {}}], "cell_type": "code"}, {"language": "python", "prompt_number": 14, "input": ["a.dtype"], "metadata": {}, "collapsed": false, "outputs": [{"text": ["dtype('float64')"], "output_type": "pyout", "prompt_number": 14, "metadata": {}}], "cell_type": "code"}, {"source": ["Other `dtype`s include `np.complex64`, `np.int32`, ..."], "cell_type": "markdown", "metadata": {}}], "metadata": {}}], "nbformat_minor": 0, "nbformat": 3, "metadata": {"signature": "sha256:c041876fcaa9c02fde7061073aa1d9dfd9a2099ea88bb4350234dc998b2b0fc9", "name": ""}}