{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Scientific Computing Lecture 04: Arrays, I/O, Plotting\n", "** J.R. Gladden, University of Mississippi, Spring 2018 **" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "**Topics:**\n", "- Vectorization of fucntions with arrays\n", "- File I/O with arrays\n", "- Array manipulation\n", "- Data visualization modules\n", "- First steps with matplotlib (pylab)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Arrays are a new data type (object) like lists, but MUCH more efficient for mathematical operations. Some differences is that arrays are restricted to numeric data types. Arrays are NOT a built in object and have to be defined in an imported module. The industry standard now is a module called ** numpy **." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Generating arrays" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "import numpy as np ## Common way to import\n", "a1=np.zeros(100) #creates an array of 100 zeros (floating)\n", "I1=np.eye(10) # 10x10 array with I_{i=j}=1. & 0 otherwise.\n", "a2=np.array( [1,2,3,4,5 ] ) #converts a list to array\n", "x=np.linspace(0,10,100) #array of 100 floats b/t 0 & 10\n", "x2=np.arange(0,100,0.1) #array b/t 0 & 10 in steps of 0.1 \n", "xy=np.array([ [1,1],[2,4],[3,9],[4,16]] ) #2D array\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xy[1,0]\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Slicing arrays" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "x=xy[:,0] # x becomes the 1st column of xy (‘:’ means all)\n", "y=xy[:,1] # First index is row #, second is column #\n", "xy[2,1] # returns -> 9 (3rd row, 2nd column)\n", "xy[0,1] = 4.0 # reassigns this element \n", "xy2 = xy # just makes xy accessible by another name\n", "xycopy = xy.copy() #makes a 2nd independent array \n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Manipulating arrays" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([ 0.00000000e+00, 1.01010101e-01, 2.02020202e-01,\n", " 3.03030303e-01, 4.04040404e-01, 5.05050505e-01,\n", " 6.06060606e-01, 7.07070707e-01, 8.08080808e-01,\n", " 9.09090909e-01, 1.01010101e+00, 1.11111111e+00,\n", " 1.21212121e+00, 1.31313131e+00, 1.41414141e+00,\n", " 1.51515152e+00, 1.61616162e+00, 1.71717172e+00,\n", " 1.81818182e+00, 1.91919192e+00, 2.02020202e+00,\n", " 2.12121212e+00, 2.22222222e+00, 2.32323232e+00,\n", " 2.42424242e+00, 2.52525253e+00, 2.62626263e+00,\n", " 2.72727273e+00, 2.82828283e+00, 2.92929293e+00,\n", " 3.03030303e+00, 3.13131313e+00, 3.23232323e+00,\n", " 3.33333333e+00, 3.43434343e+00, 3.53535354e+00,\n", " 3.63636364e+00, 3.73737374e+00, 3.83838384e+00,\n", " 3.93939394e+00, 4.04040404e+00, 4.14141414e+00,\n", " 4.24242424e+00, 4.34343434e+00, 4.44444444e+00,\n", " 4.54545455e+00, 4.64646465e+00, 4.74747475e+00,\n", " 4.84848485e+00, 4.94949495e+00, 5.05050505e+00,\n", " 5.15151515e+00, 5.25252525e+00, 5.35353535e+00,\n", " 5.45454545e+00, 5.55555556e+00, 5.65656566e+00,\n", " 5.75757576e+00, 5.85858586e+00, 5.95959596e+00,\n", " 6.06060606e+00, 6.16161616e+00, 6.26262626e+00,\n", " 6.36363636e+00, 6.46464646e+00, 6.56565657e+00,\n", " 6.66666667e+00, 6.76767677e+00, 6.86868687e+00,\n", " 6.96969697e+00, 7.07070707e+00, 7.17171717e+00,\n", " 7.27272727e+00, 7.37373737e+00, 7.47474747e+00,\n", " 7.57575758e+00, 7.67676768e+00, 7.77777778e+00,\n", " 7.87878788e+00, 7.97979798e+00, 8.08080808e+00,\n", " 8.18181818e+00, 8.28282828e+00, 8.38383838e+00,\n", " 8.48484848e+00, 8.58585859e+00, 8.68686869e+00,\n", " 8.78787879e+00, 8.88888889e+00, 8.98989899e+00,\n", " 9.09090909e+00, 9.19191919e+00, 9.29292929e+00,\n", " 9.39393939e+00, 9.49494949e+00, 9.59595960e+00,\n", " 9.69696970e+00, 9.79797980e+00, 9.89898990e+00,\n", " 1.00000000e+01, 0.00000000e+00, 9.11502583e-02,\n", " 1.63945851e-01, 2.20401487e-01, 2.62464743e-01,\n", " 2.91992415e-01, 3.10732878e-01, 3.20313668e-01,\n", " 3.22233562e-01, 3.17858491e-01, 3.08420641e-01,\n", " 2.95020188e-01, 2.78629158e-01, 2.60096933e-01,\n", " 2.40157022e-01, 2.19434721e-01, 1.98455383e-01,\n", " 1.77653000e-01, 1.57378914e-01, 1.37910456e-01,\n", " 1.19459364e-01, 1.02179882e-01, 8.61764256e-02,\n", " 7.15107753e-02, 5.82087333e-02, 4.62662298e-02,\n", " 3.56548618e-02, 2.63268685e-02, 1.82195529e-02,\n", " 1.12591706e-02, 5.36431082e-03, 4.48800435e-04,\n", " -3.57583540e-03, -6.79832024e-03, -9.30594431e-03,\n", " -1.11832166e-02, -1.25108147e-02, -1.33647975e-02,\n", " -1.38160475e-02, -1.39299095e-02, -1.37659988e-02,\n", " -1.33781496e-02, -1.28144790e-02, -1.21175458e-02,\n", " -1.13245819e-02, -1.04677801e-02, -9.57462192e-03,\n", " -8.66823244e-03, -7.76775085e-03, -6.88870634e-03,\n", " -6.04339206e-03, -5.24123032e-03, -4.48912389e-03,\n", " -3.79178961e-03, -3.15207116e-03, -2.57122934e-03,\n", " -2.04920828e-03, -1.58487737e-03, -1.17624867e-03,\n", " -8.20670417e-04, -5.14997385e-04, -2.55739136e-04,\n", " -3.91875674e-05, 1.38474883e-04, 2.81084792e-04,\n", " 3.92423508e-04, 4.76157503e-04, 5.35791756e-04,\n", " 5.74634644e-04, 5.95772878e-04, 6.02055115e-04,\n", " 5.96082957e-04, 5.80208158e-04, 5.56534944e-04,\n", " 5.26926479e-04, 4.93014592e-04, 4.56211996e-04,\n", " 4.17726308e-04, 3.78575291e-04, 3.39602811e-04,\n", " 3.01495078e-04, 2.64796829e-04, 2.29927159e-04,\n", " 1.97194771e-04, 1.66812477e-04, 1.38910812e-04,\n", " 1.13550678e-04, 9.07349548e-05, 7.04190636e-05,\n", " 5.25204690e-05, 3.69271446e-05, 2.35050343e-05,\n", " 1.21045543e-05, 2.56619294e-06, -5.27473113e-06,\n", " -1.15840857e-05, -1.65256483e-05, -2.02584678e-05,\n", " -2.29347955e-05, -2.46985202e-05])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x=np.linspace(0,10,100)\n", "y=np.sin(x)*np.exp(-x)\n", "xy=np.array([x,y])\n", "xy.shape #returns tuple (2,100) – 2 rows, 100 columns\n", "xyT=xy.transpose() # inverts rows and columns\n", "xyT.shape #returns tuple (100,2)\n", "y.max() #returns max value in y (y.min() also)\n", "y.argmax() #return the index of the max value.\n", "x.dot(y) #returns dot product of 2 1D arrays\n", "x.tolist() # converts the array to a list object\n", "xy.flatten() #turn multidim array into 1D array\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Clipping Arrays###\n", "This allows you to select only part of an array based on some Boolean (T/F) test." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0.00000000e+00 3.24699469e-01 6.14212713e-01 8.37166478e-01\n", " 9.69400266e-01 9.96584493e-01 9.15773327e-01 7.35723911e-01\n", " 4.75947393e-01 1.64594590e-01 -1.64594590e-01 -4.75947393e-01\n", " -7.35723911e-01 -9.15773327e-01 -9.96584493e-01 -9.69400266e-01\n", " -8.37166478e-01 -6.14212713e-01 -3.24699469e-01 -2.44929360e-16]\n" ] } ], "source": [ "x=np.linspace(0,2*np.pi,20)\n", "y=np.sin(x)\n", "print(y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([ 0.32469947, 0.61421271, 0.83716648, 0.96940027, 0.99658449,\n", " 0.91577333, 0.73572391, 0.47594739, 0.16459459])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y[y>0] # This will return another array with only the + values of y" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0. 0.32469947 0.61421271 0.83716648 0.96940027 0.99658449\n", " 0.91577333 0.73572391 0.47594739 0.16459459 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. ]\n" ] } ], "source": [ "y[y<0]=0 # This sets all the - values equal to 0\n", "print(y)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[False True True True True True True True True True False False\n", " False False False False False False False False]\n" ] } ], "source": [ "booleanArray = y >0 # This returns an array of Booleans according to the test\n", "print(booleanArray)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Arrays are MUCH faster than lists. I will explain the technical reasons for this later. Here is a test where we square 100,000 numbers in a list and an array and compare the speed. We'll take advantage of the %time magic in iPython." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time to square the list:\n", "CPU times: user 2.49 s, sys: 194 ms, total: 2.68 s\n", "Wall time: 2.68 s\n", "==============================\n", "Time to square the array:\n", "CPU times: user 18.6 ms, sys: 2.5 ms, total: 21.1 ms\n", "Wall time: 20.6 ms\n" ] } ], "source": [ "length = 10**7\n", "xList = range(length)\n", "xListSquared=[]\n", "print(\"Time to square the list:\")\n", "%time for i in range(length): xListSquared.append(xList[i]**2)\n", "xArray=np.linspace(0,length,length)\n", "print('='*30)\n", "print(\"Time to square the array:\")\n", "%time xArraySquared = xArray**2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### File I/O with Numpy###\n", "Reading data in (or writing data out) to files is much easier with numpy arrays using np.loadtxt() and np.savetxt(). Files need to be ASCII text files. There are many options: \n", "* Specify character that separates numbers\n", "* Specify character for comments\n", "* Specify number of lines to skip if there is a header\n", "\n", "In this example, there is a file in this directory called 'data.dat' with 2 columns of numbers." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def squareit(x):\n", "\treturn x**2\n", "data = np.loadtxt('oldfile.dat')\n", "x=data[:,0] # Select the 1st column for x values\n", "y=data[:,1] # Select the 2nd column as y values\n", "#Pass an array to a funct and it returns an array\n", "y2= squareit(y) # OR can just use y2=x**2\n", "\n", "#This will create a new text file in the current directory with new data in it.\n", "np.savetxt('newfile.dat',(x,y2)) " ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 1., 4., 9., 36., 64.])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y2" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Remote Files\n", "You can also easily open files on a remote server using the urllib2 module. Handy for working with remote collaborators or grabbing constantly updated data such as from a data logger. Obviously have to be connected to the internet!\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": true }, "outputs": [], "source": [ "import urllib2 as url\n", "import numpy as np\n", "# This file actually exists on the Physics server.\n", "address='http://www.phy.olemiss.edu/~jgladden/sci_comp/handouts/data.dat'\n", "infile=url.urlopen(address)\n", "x,y = np.loadtxt(infile,unpack=True)\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([ 1., 4., 9., 36., 64.])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y2\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Visualizing Data with matplotlib\n", "Finally we can talk about plotting! Visualizing data is a very rich and broad field and we will discuss in more depth soon. There are many choices in python, each with certain strengths. Matplotlib has become a very robust and standard library. It easily creates very professional looking plots, similar to MatLab.\n", "\n", "Note the import method below. That's pretty standard these days. Since we are in iPython Notebook, we'll also use a \"magic\" which allows plots to show up in this web browser" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nKaXUEP8PXct5/W9iau8AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "x=np.linspace(0,4*np.pi)\n", "y=np.sin(x)\n", "plt.plot(x,y)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Now let's get a bit fancier by plotting 2 curves together and adjusting the markers and colors. And add a title and axes labels. Code should be pretty self explanatory..." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y2=np.cos(x)\n", "plt.plot(x,y,'go',ms=8)\n", "plt.plot(x,y2,'r-', lw=4)\n", "plt.xlabel(\"Time (sec)\")\n", "plt.ylabel(\"Voltage (mV)\")\n", "plt.title(\"My first plot!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can make quick plots of data in a file with a single command - the plotfile() function. Run plt.plotfile? to see how it works and what the options are!" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\njDHGFf8fAfeUAN/dEiYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plotfile('mydata.dat',(0,1,2),delimiter=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a bit of code demonstrating **Mayavi**:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from numpy import pi, sin, cos, mgrid\n", "dphi, dtheta = pi/250.0, pi/250.0\n", "[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]\n", "m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;\n", "r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7\n", "x = r*sin(phi)*cos(theta)\n", "y = r*cos(phi)\n", "z = r*sin(phi)*sin(theta)\n", "\n", "# View it.\n", "from mayavi import mlab\n", "s = mlab.mesh(x, y, z)\n", "mlab.show()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "plt.plotfile?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }