{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Getting Started" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The top of Python files should always be a short documentation about the\n", "content of the file, or \"docstring\".\n", "\n", "This ipyton notebook is short demonstration of Python for scientific data analysis\n", "\n", "This script covers the following points:\n", "\n", "* Plotting a sine wave\n", "* Generating a column matrix of data\n", "* Writing data to a text-file, and reading data from a text-file\n", "* Waiting for a button-press to continue the program exectution\n", "* Using a dictionary, which is similar to MATLAB structures\n", "* Extracting data which fulfill a certain condition\n", "* Calculating the best-fit-line to noisy data\n", "* Formatting text-output\n", "* Waiting for a keyboard-press\n", "* Calculating confidence intervals for line-fits\n", "* Saving figures\n", "\n", "For such a short program, the definition of a \"main\" function, and calling\n", "it by default when the module is imported by the main program, is a bit\n", "superfluous. But it shows good Python coding style.\n", "\n", "Author: Thomas Haslwanter, Feb-2017" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modules and Packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "# To see the plots inline, even if you have not started the notebook \n", "# via \"ipython notebook --pylab=inline\"\n", "% pylab inline\n", "\n", "# Note: single comment lines are indicated by \"#\"." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In contrast to MATLAB, you explicitly have to load the modules that you need.\n", "And don't worry here about not knowing the right modules: *numpy*, *scipy*, and\n", "*matplotlib.pyplot* are almost everything you will need most of the time, and you\n", "will quickly get used to those.\n", "\n", "*pylab* automatically imports the most important components from numpy and\n", "matplotlib into the current workspace." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Sine Wave" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Create a sine-wave\n", "t = arange(0,10,0.1)\n", "x = sin(t)\n", "\n", "# \"arange\" and \"sin\" are from the package \"numpy\". But since the command\n", "# \"pylab\" already loaded \"numpy\" into the current workspace, they are known\n", "# here.\n", "\n", "# Next, save the data in a text-file, in column form.\n", "# The formatting is a bit clumsy: data are by default row variables; so to\n", "# get a matrix, you stack the two rows above each other, and then transpose\n", "# the matrix.\n", "outFile = 'test.txt'\n", "savetxt(outFile, vstack([t,x]).T)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4lOeZ6P/vPaOKGuodCRAIJNEFxjWYIsAFiFuM7QTH\njr3Jbsom2U2c7J4kx0k2zibn2JvETn6OYxvHjh3cAjbdxDWmiY5EE1WoowICSag9vz80cAQGJDTl\nnXJ/rmsuzdtm7gG9uufpYoxBKaWUOsdmdQBKKaW8iyYGpZRSF9DEoJRS6gKaGJRSSl1AE4NSSqkL\naGJQSil1AU0MSimlLqCJQSml1AU0MSillLpAkNUBDERCQoLJzs62OgyllPIpW7ZsOWGMSezrPJ9M\nDNnZ2RQXF1sdhlJK+RQROdqf87QqSSml1AU0MSillLqAJgallFIX0MSglFLqApoYlFJKXcAliUFE\nnheRWhHZfZnjIiK/EZEyEdkpIhN7HVskIgccj0WuiEcppdTAuarE8CIw5wrH5wIjHI9Hgd8DiEgc\n8GPgGmAK8GMRiXVRTEoppQbAJeMYjDEfiUj2FU6ZD7xketYR3SAig0UkFZgGrDXGNACIyFp6Esyr\nrojrYm9tPU796XZykiPJSYwkfXA4Npu4462U8irHG1s4Wt9C9ck2apvPkjY4jAmZsWTGhSOi94C6\nkKcGuKUD5b22jzv2XW7/Z4jIo/SUNhgyZMiAgli+s4p1e2vPb6fGhPHIjcNYOGUI4SH2Ab2mUt6q\nq9uwtrSGxZ8eYf2h+kueExcRwvzxaXz95hziI0M9HKHyVj4z8tkY8yzwLEBhYaEZyGv86cHJNJ5p\np6zuNPtrmlm6vZLH3y3l6ffL+Nq04Tx0/VAtQSi/sP5gPd97cwflDa2kxYTx77NzmTgkltSYMBKi\nQjly4gzby5vYcKiexZ8eYcnmch65aRiP3DiMiFCf+bOg3MRTvwEVQGav7QzHvgp6qpN67//AnYHE\nRoQwOSKOydlx3H9NFpuPNPCbdQf42fI9rD9Yz5P3jic6LNidISjlNl3dht/+/QC/WXeA7PgI/vDA\nRGaOTibIfmFzYkF6DAXpMTwwNYuy2tP8evU+nnrvAO/sqOT5ByeTFR9h0SdQ3sBT3VWXAV9y9E6a\nCpw0xlQBq4EiEYl1NDoXOfZ5zOTsOF56aAqPz8/nw/11zP/dP9hf0+zJEJRyiaaWdh54biNPvXeA\nBePTeecbNzCnIPUzSeFiOUmR/OGLk3jlK9dw4nQ7C57+B5uPNHgoauWNXNVd9VVgPZArIsdF5GER\n+aqIfNVxygrgEFAG/BH4ZwBHo/NPgc2Ox+PnGqI9SUT40rXZ/OWRqTS3dXLHM5+yu+Kkp8NQasCa\n2zpY9MJmthxt5Fd3jeX/fmH8VVcJXZ+TwNv/fB2DB4Vw/x838s6OSjdFq7yd9HQU8i2FhYXGXbOr\nVja1cvcf1nO2s5s3v3atFqmV12tt72LRC5vYcrSRPzwwiVl5yU69XlNLO4+8VMy2Y00sfmgK1+ck\nuChSZTUR2WKMKezrPB35fJG0weEsfmgKnd3dfOn5TdQ1n7U6JKUuq72zm396eQubjzTw5BfGO50U\nAAYPCuG5RZMZlhjBV/+8hX3VWrUaaDQxXEJOUiQvPDiZ2lNnefCFTbS2d1kdklKX9F8r9vDR/jqe\nuGMM88aluex1Y8KDeeHLUwgLsfPQi5upPdXmstdW3k8Tw2VMGBLL0/dPoKTyFD9fUWp1OEp9xqrd\n1bz46REeun4oX5g8sLE9V5I+OJwXHpxMY0s7//TyFjq7ul3+Hso7aWK4gumjknnkxqG8vOEYa0tr\nrA5HqfPKG1r43hs7GJsRw2NzR7ntfQrSY3jizrFsO9bE7z846Lb3Ud5FE0Mf/m12Lnmp0XzvjR3U\naHFaeYGOrm6++do2jIHfLpxASJB7b+N549KYNy6N/1l3gF3HtbdeINDE0IfQIDu/WTiB1o4uvrtk\nB93dvteLS/mX339wkG3HmvjFnWM81mvup/MLSIgM5dtLttPWoW1u/k4TQz/kJEXyv27L45OyE7yx\n9bjV4agAdrT+DL97v4xbx6Zy21jXNTb3JWZQML+6eyxltaf51ep9HntfZQ1NDP20cPIQJmXF8suV\neznZ2mF1OCoAGWP40dISgm3C/7o1z+Pvf+OIRL44NYsX/nGY0spTHn9/5TmaGPrJZhP+97x8Glva\neXLtfqvDUQFo5e5qPtxfx3eKckmJCbMkhn8ryiUmPJjH3y3BFwfHqv7RxHAVCtJjuP+aLF5af4Q9\nVfqNSXnO6bOdPP5OKXmp0Sy6NsuyOGIGBfPdolw2HGpg1e5qy+JQ7qWJ4Sp9t2gkMeHB/HipfmNS\nnvPM+2VUn2rjZ58v6HNSPHdbOGUIo1Ki+NnyPdoQ7ac0MVylwYNC+N6cUWw60sBK/cakPKC2uY3n\n/3GY+ePTmDjE+pVv7TbhR7fnUdHUyh8/OmR1OMoNNDEMwD2FmQxPjODJtfvp0u6rys1+9/cyOrsM\n35450upQzrtueAJzC1J45oOD1J/W+cT8jSaGAbDbhO/MyuVA7Wmdmli5VXlDC69uOsY9kzPJTvCu\nmX6/W5TL2c4untVSg9/RxDBAcwtSGJUSxVPv7dc5ZJTbPPnefmwifHP6CKtD+YycpEjmjUvjpfVH\nOaGlBr/iqoV65ojIPhEpE5HHLnH8SRHZ7njsF5GmXse6eh1b5op4PMFmE75blMuR+hbe2lphdTjK\nD+2vaebtbRUsui7bsu6pffnmjBFaavBDTicGEbEDTwNzgTxgoYhcMPrGGPNtY8x4Y8x44LfAW70O\nt547ZoyZ52w8njRzdBLjMmL4n3UHaO/UUoNyrd+sO0BESBBf+9xwq0O5rGGJkSwYn85L64/o2iV+\nxBUlhilAmTHmkDGmHXgNmH+F8xcCr7rgfS0nInynKJeKplbe1KkylAsdrT/Dil1V3D91CLERIVaH\nc0Vfn55De2c3z36ks6/6C1ckhnSgvNf2cce+zxCRLGAo8Pdeu8NEpFhENojIAhfE41E3jUigID2a\nP358SCfYUy7zx48PEWSz8fD1Q60OpU/DEiNZMCGdP284SsOZdqvDUS7g6cbne4E3jDG9R8VkOdYg\nvQ94SkQuWW4WkUcdCaS4rq7OE7H2i4jw6E3DOVR3hnV7a60OR/mBE6fP8nrxce6YmE5StHe2LVzs\na58bTltHNy9vOGp1KMoFXJEYKoDMXtsZjn2Xci8XVSMZYyocPw8BHwATLnWhMeZZY0yhMaYwMTHR\n2Zhd6paCFNIHh2tRWrnEi/84QntXN4/eNMzqUPptRHIU03ITeWn9ER0N7QdckRg2AyNEZKiIhNDz\nx/8zvYtEZBQQC6zvtS9WREIdzxOA6wGfW0czyG7j4RuGsvlII1uPNVodjvJhp8928tL6I8zOS2FY\nYqTV4VyVR24cxonT7SzbrmN7fJ3TicEY0wl8HVgN7AGWGGNKRORxEendy+he4DVz4QRDo4FiEdkB\nvA88YYzxucQA8IXJmcSEB+sUAcopr206xqm2Tr46zXt7Il3OdcPjGZ0azXOfHNJ5xHxckCtexBiz\nAlhx0b4fXbT9k0tc9ykwxhUxWC0iNIgHpg7hmQ8OcuTEGa8bpaq8X1e3YfH6I0zJjmN85mCrw7lq\nIsJXbhjKd1/fwYf765iWm2R1SGqAdOSzCy26Lpsgm/DSem2AU1fvw/21lDe0sui6bKtDGbDbx6WR\nHB3Kcx8ftjoU5QRNDC6UFBXG3IJUXt9STkt7p9XhKB+z+NOjJEeHUpSfbHUoAxYSZONL12bzSdkJ\n9tc0Wx2OGiBNDC72xWuzaG7r1AY4dVUOnzjDh/vruG9KFsEWr7fgrHsnZxJit/GKdl31Wb79G+iF\nCrNiGZUSxUvrj2oDnOq3lzccJdguLLwms++TvVx8ZChzx6Tw1tYKLTn7KE0MLiYiPDA1i9KqU2wr\nb+r7AhXwWto7WVJczpyCVJKifGNAW1/uvyaL5rNacvZVmhjcYMGEdCJDg3hZG6FVP/xtWyXNbZ2W\nruXsapOzYxmZHMkrG49ZHYoaAE0MbhAZGsQdE9N5d2eVzh2j+vTKxqOMTo1mUpb1y3a6iohw/zVZ\n7Ko4yQ4tOfscTQxu8sDULNq7unm9uLzvk1XA2l1xkpLKUyyckomIWB2OS31+YjrhwXZe2aglZ1+j\nicFNRiZHUZgVy5Licm2EVpe1pLickCAb88ddckJinxYdFsyCCWks21HJydYOq8NRV0ETgxvdU5jJ\nwbozbD2mRWn1WW0dXby9rYK5BSnEDAq2Ohy3WDhlCG0d3bo2uo/RxOBGt4xNJTzYrtVJ6pJW7a6m\nua2TLxT6fhfVyxmTHkNuchSvb9GFrHyJJgY3igwN4taxqbyzo1L7c6vP+OvmcjLjwpk6LN7qUNxG\nRLhrUgY7yps4oCOhfYYmBje7pzCTM+1drNhVbXUoyoscrT/D+kP13DMpE5vNvxqdL7ZgQjp2m/CG\nlhp8hiYGN5ucHUt2/CCWaHWS6uX14uPYBO4qzLA6FLdLjArl5twk3tpWQWdXt9XhqH7QxOBmIsLd\nhZlsOtzA4RNnrA5HeYHubsNbW49z44hEUmPCrQ7HI+4uzKCu+SwfHfCeZXnV5Wli8IA7J2ZgE3hT\ni9IK2HC4nsqTbdwx0f+6qF7O9FFJxEeE8Hqx3gO+wCWJQUTmiMg+ESkTkccucfxBEakTke2Ox1d6\nHVskIgccj0WuiMfbpMSEcX1OAn/bXkF3t45pCHRvb60gMjSIorwUq0PxmGC7jQUT0nlvT43OBuAD\nnE4MImIHngbmAnnAQhHJu8SpfzXGjHc8nnNcGwf8GLgGmAL8WET8Z16AXj4/IZ3jja1s0TWhA1pb\nRxcrd1czpyCF8BC71eF41J0TM+joMizfqWMavJ0rSgxTgDJjzCFjTDvwGjC/n9fOBtYaYxqMMY3A\nWmCOC2LyOrPzUwgPtvP2tgqrQ1EWWltaw+mzndwxIXCqkc7JS4smNzmKv+mMq17PFYkhHejd5ea4\nY9/F7hSRnSLyhoicG9HT32t9XkRoEEX5ySzfWcXZzi6rw1EWeXtbBakxYX49duFK5k9IY8vRRsob\nWqwORV2Bpxqf3wGyjTFj6SkVLL7aFxCRR0WkWESK6+p8s2fDggnpnGzt4IN9vhm/cs6J02f5cH8d\n88an+f3YhcuZNy4NgKXbteTszVyRGCqA3mP6Mxz7zjPG1Btjzjo2nwMm9ffaXq/xrDGm0BhTmJiY\n6IKwPe/GnATiI0L0pghQ7+6opKvbcMcE/x+7cDkZsYOYkh3H37ZX6uSSXswViWEzMEJEhopICHAv\nsKz3CSKS2mtzHrDH8Xw1UCQisY5G5yLHPr8UZLdx+7g03ttTq7NNBqC3t1eSlxpNbkqU1aFYav6E\nNMpqT1NSecrqUNRlOJ0YjDGdwNfp+YO+B1hijCkRkcdFZJ7jtG+KSImI7AC+CTzouLYB+Ck9yWUz\n8Lhjn99aMCGd9s5uVu2usjoU5UFH68+wo7yJ+ePTrA7FcreOSSXYLlpy9mIuaWMwxqwwxow0xgw3\nxvzcse9Hxphljuc/MMbkG2PGGWNuNsbs7XXt88aYHMfjBVfE483GZcQwNCGCpdozI6C8u7Pni8Bt\n4zQxDB4UwudGJrHMUbWmvI+OfPYwEeG2salsOFRPXfPZvi9QfuGdHZVMyoolfXBgTIHRlwUT0qg5\ndZaNh+qtDkVdgiYGC9w2No1uAyu1OikgHKhpZm91M7ePTe375AAxY1Qyg0LsvLtL7wFvpInBArkp\nUYxMjtRVrQLEOzursEnPwk2qR3iInRmjk1m1u1pnXPVCmhgsctvYNDYfaaTqZKvVoSg3Msbw7o5K\npg6LJykqzOpwvMptY1NpONPOeq1O8jqaGCxym+Pb4/KdWpT2ZyWVpzh04gy3a6PzZ3xuZCKRoUG8\nu0PvAW+jicEiwxIjyUuNPt9bRfmnd3ZWEmQT5uQHzkyq/RUWbGdWXjKrSqrp0Ookr6KJwUK3j0tj\ne3mTzhvjp3qqkaq4YUQCsREhVofjlW4dk8rJ1g4+KTthdSiqF00MFjpXnaSlBv+04/hJKppauW2s\nViNdzo0jE4gK0+okb6OJwUKZcYMYlzmY5bu0d5I/WrmrimC7MGt0stWheK3QIDuz81NYU1qtsw57\nEU0MFrulIIXdFae0OsnPGGNYsbuK63MSiBkUbHU4Xu3Wsak0t3Xy8X6tTvIWmhgsNregpzpJB7v5\nl55k38otBTp2oS835CQQHRbEyt3VVoeiHDQxWGxI/CAK0qNZsUtvCn+yYncVdpswK0+rkfoSbLcx\nKy+FtaXVtHdq7yRvoInBC8wtSGV7eRMVTTrYzR8YY1i5q4rrhsdrb6R+mluQwqm2Th3s5iU0MXiB\nuQU9fdxXaVHaL5RWneJIfQu3jNFqpP66YUQCkaFBrNS5k7yCJgYvMCwxklEpUbpGg59Yuasau02Y\nrYPa+i0s2M70UUmsLtG5k7yBJgYvccuYVIqPNlJzqs3qUJQTzvVGmjosjjitRroqcwtSaGzpYNNh\nv16ryye4JDGIyBwR2SciZSLy2CWOf0dESkVkp4isE5GsXse6RGS747Hs4msDxS1jUjAGVpdodZIv\nO1B7mkN1Z5ijvZGu2rTcJMKD7azQkrPlnE4MImIHngbmAnnAQhHJu+i0bUChMWYs8Abw372OtRpj\nxjse8whQOUlRjEiKZIXWsfq0VburEYHZ2hvpqoWH2JmWm8jqkhpd2c1irigxTAHKjDGHjDHtwGvA\n/N4nGGPeN8acG8G1Achwwfv6nbkFKWw63ED9aV3ZzVet2l3NpCGxJEXrFNsDMXdMKnXNZ9lytNHq\nUAKaKxJDOlDea/u4Y9/lPAys7LUdJiLFIrJBRBZc7iIRedRxXnFdXZ1zEXupovwUug2s21NrdShq\nAI7Vt1BadYo5BdroPFDTRyUREmTTAZ8W82jjs4g8ABQCv+q1O8sYUwjcBzwlIsMvda0x5lljTKEx\npjAxMdED0Xpeflo0GbHhrNJ2Bp90rn1IeyMNXGRoEDfmJLCmpAZjtDrJKq5IDBVAZq/tDMe+C4jI\nTOA/gHnGmPN1JcaYCsfPQ8AHwAQXxOSTRHrm7f/kwAma2zqsDkddpVUl1eSnRZMZN8jqUHza7PwU\nKppaKak8ZXUoAcsViWEzMEJEhopICHAvcEHvIhGZAPx/9CSF2l77Y0Uk1PE8AbgeKHVBTD5rdkEK\n7V3dvL/PP6vL/FXtqTa2HG3UBXlcYMboJGyiPfSs5HRiMMZ0Al8HVgN7gCXGmBIReVxEzvUy+hUQ\nCbx+UbfU0UCxiOwA3geeMMYEdGKYOCSWhMhQvSl8zOrSGgBtX3CB+MhQpgyN03vAQkGueBFjzApg\nxUX7ftTr+czLXPcpMMYVMfgLu00oyk/mb9sqaOvoIizYbnVIqh9W765mWGIEOUmRVofiF2bnp/C/\n3ynlUN1phiXqv6mn6chnLzQ7P4WW9i4+OaDz0/uCppZ21h+qZ3Z+CiJidTh+ochRJbe6pMbiSAKT\nJgYvdO2weKLCgrQo7SPW7amlq9to+4ILpQ8OZ2xGjN4DFtHE4IVCgmzMGJXE2j01OqGYD1hTWk1K\ndBhj0mOsDsWvzM5PYXt5E9Undf4wT9PE4KVm56fQ1NLB5iM6AtSbtbZ38eH+Ooryk7HZtBrJlWbn\n90wrsqZUSw2eponBS900MpGQIJveFF7u4wN1tHV0U5Sn1UiulpMUxfDECNZoO4PHaWLwUhE6AtQn\nrCmtITosiGuGxVkdil8qyk9hw6F6TrbogE9P0sTgxYryk6loaqW0SkeAeqPOrm7W7alhxuhkgu16\nK7lDUV4ynd2G9/fp/GGepL/NXmzm6GRsghalvdTmI400tnRQpFNsu824jMEkRemAT0/TxODF4iND\nKczSEaDeak1pNaFBNj6X65+TOnoDm02YlZfMh/vraOvosjqcgKGJwcsV5Sezt7qZY/UtfZ+sPMYY\nw5qSGm4ckcCgEJdMIKAuo8gx4PMfZTrg01M0MXi5WXnaZc8blVSeoqKpVXsjecC1w+KJCg3SKlUP\n0sTg5bLiIxiVEqU3hZdZW1qDTXpmAlXuFRJkY9qoJN7bo0t+eoomBh9QlJdM8VFd8tObrCmtoTAr\njvjIUKtDCQiz85OpP9PO1mM64NMTNDH4gPNLfu7VLnveoLyhhT1VpyjK195InvK5kYmE2G2s3q1V\nqp6gicEH5KdFkxYTxtpSrU7yBmsc/w+ztJuqx0SFBXPt8HjW7tEBn57gksQgInNEZJ+IlInIY5c4\nHioif3Uc3ygi2b2O/cCxf5+IzHZFPP5GpKfL3scH6mht1y57VltbWk1uchRZ8RFWhxJQivKTOVrf\nwv6a01aH4vecTgwiYgeeBuYCecBCEcm76LSHgUZjTA7wJPBLx7V59CwFmg/MAZ5xvJ66SFF+Cm0d\n3Xx0QJf8tFLjmXY2HW7QaiQLzBrt6KGn43rczhUlhilAmTHmkDGmHXgNmH/ROfOBxY7nbwAzpGdF\nk/nAa8aYs8aYw0CZ4/XURaYMjSM6LEirkyy2bm8t3QbtpmqBpOgwxmcOZu0evQfczRWJIR0o77V9\n3LHvkuc41og+CcT381oFBNttTB+VxDpdo8FSa0urSY0JoyA92upQAlJRfjI7j5+ksqnV6lD8ms80\nPovIoyJSLCLFdXWBWZ1SlJ9CY0sHxUe1y54Vzq29MCsvWZfwtMi5ktp7WmpwK1ckhgogs9d2hmPf\nJc8RkSAgBqjv57UAGGOeNcYUGmMKExMDc26ac2s0aHWSNT4pO0FbR7f2RrJQTlIkwxIi9B5wM1ck\nhs3ACBEZKiIh9DQmL7vonGXAIsfzu4C/m54+Z8uAex29loYCI4BNLojJL0WGBnH98HjWlFZrlz0L\nrCmpJiosiKnD4q0OJaDNyk9m/cF6TrbqGg3u4nRicLQZfB1YDewBlhhjSkTkcRGZ5zjtT0C8iJQB\n3wEec1xbAiwBSoFVwL8YY7Q/5hUU5adQ3tDK3upmq0MJKF3dhnV7a5kxKknXXrDYuTUaPtA1GtzG\nJdNCGmNWACsu2vejXs/bgLsvc+3PgZ+7Io5AMGN0EuJYo2F0qjaAesqWo400nGlnlvZGstz4zFgS\nIkNZU1LD/PHaV8Ud9KuPj0mKCmPikFidbdXD1pRUE2LXtRe8gd0mzMpL4oN9tZzt1AoGd9DE4IOK\n8pIpqTzF8UZdo8ETjDGsKa3h+px4IkN17QVvUJSXwpn2Lj49WG91KH5JE4MPKsrvqc7Qnhmesa+m\nmWMNLef/3ZX1rh0eT0SIXaejdxNNDD5oaEIEI5IiNTF4yNqSGkTXXvAqYcF2puUmsba0hm5do8Hl\nNDH4qKL8ZDYebqCppd3qUPzemtIaJmQOJikqzOpQVC9F+cmcOH2WbeVNVofidzQx+KiivBS6ug1/\n1zUa3KqyqZVdFSe1GskLTctNIsgm2hHDDTQx+Kgx6TGkRIdpHaubnZvJU0c7e5+YcMcaDVql6nKa\nGHyUzdazRsOH++to69Aue+6yprSGnKRIhidGWh2KuoSivGQO1Z2hrFbXaHAlTQw+rCg/mdaOLj4+\ncMLqUPxS45l2Nh5uYLauveC1ZjpKclqd5FqaGHzY1GHxRIcFsVoXLnGLdXtr6eo2zNb2Ba+VGhPO\nuIwYVmuVqktpYvBhwXYbM0Yn6xoNbrK6pGfthTHpMVaHoq6gKD+FHeVNVJ9sszoUv6GJwcfNzk+m\nsaWDTUcarA7Fr7S2d/HxgTqKdO0Fr3euRKfVSa6jicHH3TQykdAgm/ZOcrGeRv1urUbyAT2dAyJY\ntVsTg6toYvBxg0KCuGlkImtKdI0GV1pTUk1MeDBThsZZHYrqhzkFKWw83EDjGR3w6QqaGPzA7PwU\nKk+2savipNWh+IWOrm7e21PDjNFJBOnaCz5hdn7K+TUzlPP0t94PzBiVhN0m2jvJRTYeauBUW6dW\nI/mQMekxpMWE6T3gIk4lBhGJE5G1InLA8TP2EueMF5H1IlIiIjtF5Au9jr0oIodFZLvjMd6ZeAJV\nbEQIU7LjtMuei6wuqSY82M5NI3TtBV8hIhTlp/DR/jpa2jutDsfnOVtieAxYZ4wZAaxzbF+sBfiS\nMSYfmAM8JSKDex3/d2PMeMdju5PxBKzZ+cmU1Z7WEaBO6u42rC6pZlpuIuEhdqvDUVdhdn4KZzu7\n+XBfndWh+DxnE8N8YLHj+WJgwcUnGGP2G2MOOJ5XArWAfhVzsdkFPdUeWpR2ztZjjdQ2n2VOgVYj\n+ZrJ2bHEDgrWe8AFnE0MycaYKsfzauCKcweIyBQgBDjYa/fPHVVMT4pIqJPxBKzUmHDGZw5m5e6q\nvk9Wl7Vqd88SntNH6doLvibIbmNWXjLr9uqSn87qMzGIyHsisvsSj/m9zzM9fSUv219SRFKBPwNf\nNsacG6b7A2AUMBmIA75/hesfFZFiESmuq9Oi4qXMLUhhd8Upyht0yc+BMMawcnc11+fEExUWbHU4\nagDmFqTS3NbJp2W65Kcz+kwMxpiZxpiCSzyWAjWOP/jn/vBfsq+YiEQDy4H/MMZs6PXaVabHWeAF\nYMoV4njWGFNojClMTNSaqEuZW5AKoAN9Bqik8hQVTa3n/x2V77kuJ56o0CAtOTvJ2aqkZcAix/NF\nwNKLTxCREOBt4CVjzBsXHTuXVISe9ondTsYT0IbEDyIvNZpVWsc6ICt3V2G3yfkZO5XvCQ2yM2N0\nEmtKa+jQ+cMGzNnE8AQwS0QOADMd24hIoYg85zjnHuAm4MFLdEt9RUR2AbuABOBnTsYT8OYUpLDl\naCM1p3RCsau1anc11wyNIy4ixOpQlBPmFKTS1NLBxkM6f9hAOZUYjDH1xpgZxpgRjiqnBsf+YmPM\nVxzPXzbGBPfqknq+W6oxZroxZoyjauoBY4z2tXTSXO2dNCAHapo5WHfm/L+f8l3TchMZFGLX6iQn\n6MhnPzMiOYrhiRGs3KWJ4WqsdLTL6NrOvi8s2M7NuUmsLqmhq1vnDxsITQx+aG5BKhsP11N/+qzV\nofiMFbsJg/9aAAAV1UlEQVSqmJwdS3J0mNWhKBeYU5DCidNnKdbp6AdEE4MfmlOQQrfpWa9Y9e1g\n3Wn2VjdzyxjtjeQvbh6VREiQ7XxJUF0dTQx+KD8tmuz4QSzfqXWs/bHC8e+k3VT9R2RoEJ8bmciq\n3dV0a3XSVdPE4IdEhFvHpvLpwRNandQPy3dVUZgVS0qMViP5k1vHpFJ9qo2txxqtDsXnaGLwU7eO\nSaPboGMa+qDVSP5rxuie6qR3teR81TQx+KnRqVEMS4hgxS69Ka7kfDXSGO2N5G+iwoK5OTeRFbuq\ntDrpKmli8FMiwi1jUll/sJ4TWp10Wct3VTEpK5bUmHCrQ1FucOvYNGqbz7JZeyddFU0MfuzWsak9\n1UnaM+OSDmk1kt+bMSqJsGAby7XkfFU0MfixUSlRDEuM0N5Jl3Gumk1HO/uviNAgpo9KYsWuah3s\ndhU0MfgxEeG2MT2D3Wqbde6kiy3bUUlhVixpg7UayZ/dOiaNE6fPsvGwTsXdX5oY/NytY3t6J+kU\nGRfaW32K/TWnmTc+zepQlJvdPCqR8GC7lpyvgiYGP5ebEkVuchTLdlRaHYpXWba9ErtNtH0hAAwK\nCWLG6CRW7q6mU6fi7hdNDAFg3vg0thxt1JXdHIwxvLOzkuuGx5MQqavJBoLbx6XRcKadT8pOWB2K\nT9DEEADmjeupLtFSQ49t5U2UN7Se/3dR/m9abiLRYUEs3a73QH9oYggAmXGDmJQVyzK9KYCeaqSQ\nIBuztTdSwAgNsnPLmFRWl1TT2t5ldThez6nEICJxIrJWRA44fsZe5ryuXqu3Leu1f6iIbBSRMhH5\nq2MZUOUG88alsa+mmb3Vp6wOxVJd3Yblu6q4OTeR6LBgq8NRHjR/fDot7V2s3aOzDvfF2RLDY8A6\nY8wIYJ1j+1Jae63eNq/X/l8CTxpjcoBG4GEn41GXccuYVOw2CfhSw4ZD9dQ1n2XeuHSrQ1Eeds3Q\nOFKiw1i2vcLqULyes4lhPrDY8XwxsKC/F4qIANOBNwZyvbo6iVGhXJ+TwNLtlRgTuAN9lm6vICKk\nZ8F4FVhsNmHe+DQ+2FdH45l2q8Pxas4mhmRjzLnOwdVA8mXOCxORYhHZICLn/vjHA03GmE7H9nFA\nv8a50fxxaVQ0tbLlaGBOQ9za3sWKXdXMHZNKWLDd6nCUBeaPT6Oz27BC14O+oj4Tg4i8JyK7L/GY\n3/s80/M19HJfRbOMMYXAfcBTIjL8agMVkUcdyaW4rq7uai9XQFF+MmHBNt7aFphF6TWl1Zw+28kd\nE/X7R6DKS40mJymSpdsCu0q1L30mBmPMTGNMwSUeS4EaEUkFcPysvcxrVDh+HgI+ACYA9cBgEQly\nnJYBXPYvljHmWWNMoTGmMDEx8So+ojonKiyYOfkpvLujkraOwOuZ8ebWCtIHhzN1aLzVoSiLiAgL\nxqex6UiDjuu5AmerkpYBixzPFwFLLz5BRGJFJNTxPAG4Hih1lDDeB+660vXKte6clMGptk7eC7Ce\nGTWn2vjkQB2fn5COzSZWh6Ms9PmJGYjAW1sDs+TcH84mhieAWSJyAJjp2EZECkXkOcc5o4FiEdlB\nTyJ4whhT6jj2feA7IlJGT5vDn5yMR/XhuuEJpESH8eaW41aH4lFLt1fQbeDzWo0U8NIHh3Pd8Hje\n2FquC/hcRlDfp1yeMaYemHGJ/cXAVxzPPwXGXOb6Q8AUZ2JQV8duEz4/MZ1nPzpEbXMbSVH+v86x\nMYY3t1QwPnMwwxMjrQ5HeYG7J2Xyr3/dzqYjDUwdplWLF9ORzwHozokZdHWbgGmAK606xb6aZu6c\nlGF1KMpLzM5PITI0iDcCrOTcX5oYAlBOUiTjMwfz5tbjATGm4c0tFQTbhdvH6kyqqkd4iJ3bxqay\nYlcVZ8529n1BgNHEEKDunJTB3upmSir9e4qMs51dvL3tOLPykhk8SGdcUf/PXZMyaGnvYqUuffsZ\nmhgC1LyxaYQE2VhSXG51KG61uqSGxpYO7p08xOpQlJeZlBXL0IQIXvfze2AgNDEEqJhBwdw6JpW3\nt1b49WyTr206RkZsODfkJFgdivIyIsJdkzLYeLiBIyfOWB2OV9HEEMAWThlC89lO3tnpn43QR+vP\n8OnBer5QmKljF9Ql3TUpA7tNeHXzMatD8SqaGALY5OxYcpIieXWTf94Ur20uxyZwd2Gm1aEoL5Uc\nHcas0cm8Xnycs53+W3K+WpoYApiIsHDKELYda2JPlX81Qnd0dfN68XGmj0oiJcb/x2qogbvvmiE0\nnGlndUlgzQZwJZoYAtydE9MJCbL5Xalh3Z5aTpw+q43Oqk835CQwJG4Qr2w4anUoXkMTQ4AbPCjE\nLxuhX910jOToUKbl6oSL6spsNuG+a4aw8XADZbXNVofjFTQxqP/XCL3DPxqhD9Wd5sP9ddw3JYsg\nu/6Kq77dPSmDYLvwykb/KjkPlN41isnZsYxMjuTFT4/4xUjol9YfJdje8y1Qqf6IjwxlbkEqb245\n7lcl54HSxKAQER66fiilVafYeLjB6nCc0tzWwevF5dw+No3EqFCrw1E+5IGpWZxq6+TtAF3IqjdN\nDAqABRPSiR0UzPOfHLY6FKe8XnycM+1dLLou2+pQlI+ZnB3LmPQYnv/H4YCfjlsTgwIgLNjO/ddk\nsXZPDcfqfXNlq+5uw+L1R5g4ZDDjMgdbHY7yMSLCwzcMpaz2NB8eCOzlgzUxqPO+eG0WdhEWrz9i\ndSgD8sH+Wo7Wt/Dg9UOtDkX5qFvGpJISHcafPvbtkrOznEoMIhInImtF5IDjZ+wlzrlZRLb3erSJ\nyALHsRdF5HCvY+OdiUc5Jzk6jNvGpvLXzeU0t3VYHc5Ve+EfR0iODmVuQYrVoSgfFRJkY9F12XxS\ndsLvBn1eDWdLDI8B64wxI4B1ju0LGGPeN8aMN8aMB6YDLcCaXqf8+7njxpjtTsajnPTQDUM5fbaT\nJcW+tYDJzuNNfHzgBIuuyyZYu6gqJ9w3ZQjhwXb+5OPtbc5w9g6aDyx2PF8MLOjj/LuAlcYY36zE\nDgBjMwYzZWgcz318yKfmjnnm/YNEhQXxxalZVoeifFzMoGDuKcxg6fYKak+1WR2OJZxNDMnGmCrH\n82oguY/z7wVevWjfz0Vkp4g8KSKX7V8oIo+KSLGIFNfVBXbDkLt9Y3oOVSfbeHOLb3TbO1DTzKqS\nah68LpuosGCrw1F+4KEbhtJt4I8fH7I6FEv0mRhE5D0R2X2Jx/ze55mekVGX7eMlIqnAGGB1r90/\nAEYBk4E44PuXu94Y86wxptAYU5iYqNMcuNMNOQmMzxzMMx+U0dHVbXU4ffr9BwcJD7bzZW10Vi6S\nFR/B/PFp/HnDUeqaz1odjsf1mRiMMTONMQWXeCwFahx/8M/94a+9wkvdA7xtjDnfqmmMqTI9zgIv\nAFOc+zjKFUSEb0zP4XhjK3/z8sE+5Q0tLN1RyX3XDCEuQpfuVK7zjekjaO/s5tmPDlodisc5W5W0\nDFjkeL4IWHqFcxdyUTVSr6Qi9LRP7HYyHuUi00clkZ8WzTMfHKTLiwf7/OHDg9hFeOTGYVaHovzM\n0IQIFoxP588bjnLidGCVGpxNDE8As0TkADDTsY2IFIrIc+dOEpFsIBP48KLrXxGRXcAuIAH4mZPx\nKBc5V2o4fOIM73rpCm/H6ltYUlzOXYUZuuaCcouvT89xlBoCq60hyJmLjTH1wIxL7C8GvtJr+wiQ\nfonzpjvz/sq9ivJSGJUSxZNr9zO3IJWQIO/qBvrrNfuw24RvzRhhdSjKTw1LjGT++HT+vP4oj940\njITIwJh/y7vudOVVbDbh+3NHcaS+hZe9bBGTXcdPsmxHJV+5YRjJ0VpaUO7z9ek5tHd18z/vHbA6\nFI/RxKCuaNrIRG4ckcBv/n6Aky3eMRraGMMvVu4hLiKEf/qcti0o9xqeGMn91wzhlY1H2VcdGAv5\naGJQVyQi/PCW0Zxs7eC3f/eOb0wf7q/j04P1fGN6jo5bUB7x7ZkjiQoL5qfvlvrFmiV90cSg+jQ6\nNZp7JmWyeP0RjtafsTSWzq5unli5lyFxg7j/Gh3lrDwjNiKEf505gk/KTrBuz5V65fsHTQyqX75T\nNJIgm42fLd9j6Tem5z45zN7qZn54y2ivawxX/u2BqVkMT4zg5yv20N7p/QM/naF3luqX5OgwvjVz\nBGtLa1i+q6rvC9zgyIkzPLl2P7Pzk5mjM6gqDwu22/jP2/I4fOKM30+VoYlB9dtXbhjKuIwYfrS0\nhHoPD/gxxvDDt3cRYrfx+PwCj763UufcnJvErWNSeeq9/ZZMy+2p0romBtVvQXYb/33XOJrbOvjJ\nO6Uefe/Xtxzn04P1PHbLKO2eqiz10wUFxISH8J0lOzxapbTr+Elu++0nHDnh/nY+TQzqquSmRPHN\n6SN4Z0clq0uqPfKexxtb+PnyPUzJjmPh5CEeeU+lLicuIoRf3DGGPVWnPNZT71RbB//yl600nGkn\nOtz9PfE0Mair9tVpw8lPi+axN3dS3uDepTXaOrr42stb6e42/PddY7HZxK3vp1R/zMpL5q5JGTzz\nwUG2Hmt063sZY/je6zupbGrld/dN8MhkkZoY1FULttv43X0T6eo2PPJSMWfOdrrlfYwx/GjpbnZV\nnOTJL4wnOyHCLe+j1ED86PY8UmPC+Oqft1DZ1Oq293nx0yOsKqnme3NymZQV57b36U0TgxqQoQkR\n/O6+ieyvaea7S3bQ7YYZWF/dVM6S4uN8Y3oOM/P6WgNKKc+KDgvmT4sm09LexcOL3fMFacvRBv5r\nxR5mjk7y6AzCmhjUgN00MpEf3jKaVSXVPLXOtXWtf99bw0+WlXDTyET+deZIl762Uq6SmxLF0/f3\nfEH65qvbXDpF/c7jTTz4/GbSBofz67vH0bM6gWdoYlBOefiGodw1KYPfrDvAr1fvc0l3utUl1fzT\nn7eQmxLFb++dgF3bFZQX+9zIRH4yL591e2v59zd2uGTVw5LKk3zxT5uIGRTMXx6ZyuBBnl2Eyqlp\nt5USEX5551iC7cLv3i+jsaWdx+cXDPiP+fKdVXzrtW0UpMew+KEpxHigB4ZSzvri1CwaTrfz5Hv7\nqWs+yzP3TxzwPF67K07ypec3MSjEzquPTCV9cLiLo+2bUyUGEblbREpEpFtECq9w3hwR2SciZSLy\nWK/9Q0Vko2P/X0VE12b0QXab8F+fH8PXpg3nlY3H+OdXtlz1ALi2ji5+uWov33h1K+MzB/PnhzUp\nKN/yrZkj+O+7xrL+YD13/2E9FVfZIN3dbXju40Pc8cynhNht/OWRqWTGDXJTtFfmbFXSbuAO4KPL\nnSAiduBpYC6QBywUkTzH4V8CTxpjcoBG4GEn41EWERG+P2cU/3nraNbtqWX6//mQv2w81q9G6e3l\nTdz+20/4/QcHuWtSBosfmqKzpiqfdE9hJi9+eQoVja3M/D8f8uTa/bS0990ofbyxhQdf3MzPlu/h\nppGJrPjWjQy1sBeeuKJOWEQ+AP7NsXLbxceuBX5ijJnt2P6B49ATQB2QYozpvPi8KyksLDTFxZ95\nK+UlDtQ0859/283Gww3kpUZz+7g0po9KYmRy5PkGtKaWdlburmbZ9ko2HK4nJTqMX9wxhmm5SRZH\nr5TzyhtaeGLVXpbvrCIpKpRF12UzdVgcY9IHn5/8sbW9i3+UneAvm47xwb7a83MxPXDNELc1NIvI\nFmPMZWt3zp/ngcRwFzDHGPMVx/YXgWuAnwAbHKUFRCQTWGmM6XMiHE0M3s8Yw9vbKvjTJ4cpqeyZ\nU2bwoGAEaO/spqWjC2N6ur3OG5fGwzcOJVpLCcrPbDnawC9W7KX4aM8guLBgG/ERoTScaae1owuA\nxKhQvlCYyb1TMsmIdW/VUX8TQ5+NzyLyHnCpqSz/wxizdCDBDYSIPAo8CjBkiE6L4O1EhDsmZnDH\nxAyqT7bx/r5adlWcJMgmhNhtRIYFMWNUMgXp0R7thqeUJ03KiuONr11H/emzbD7SyKbDDTS1tBMX\nEUJcZAgjkqKYlptIsN27Ooj2mRiMMTOdfI8KILPXdoZjXz0wWESCjDGdvfZfLo5ngWehp8TgZEzK\ng1Jiwlg4ZQgLrQ5EKYvER4YypyDFZ6aL90Sa2gyMcPRACgHuBZaZnjqs94G7HOctAjxWAlFKKXVp\nznZX/byIHAeuBZaLyGrH/jQRWQHgKA18HVgN7AGWGGNKHC/xfeA7IlIGxAN/ciYepZRSznNJ47On\naeOzUkpdvf42PntXi4dSSinLaWJQSil1AU0MSimlLqCJQSml1AU0MSillLqAT/ZKEpE64OgAL08A\nTrgwHF8RiJ87ED8zBObn1s/cP1nGmMS+TvLJxOAMESnuT3ctfxOInzsQPzME5ufWz+xaWpWklFLq\nApoYlFJKXSAQE8OzVgdgkUD83IH4mSEwP7d+ZhcKuDYGpZRSVxaIJQallFJXEFCJQUTmiMg+ESkT\nkcesjsfdRCRTRN4XkVIRKRGRb1kdk6eIiF1EtonIu1bH4ikiMlhE3hCRvSKyx7Fcrl8TkW87frd3\ni8irIhJmdUzuICLPi0itiOzutS9ORNaKyAHHz1hXvV/AJAYRsQNPA3OBPGChiORZG5XbdQLfNcbk\nAVOBfwmAz3zOt+iZ5j2Q/A+wyhgzChiHn39+EUkHvgkUOpYEttOz3os/ehGYc9G+x4B1xpgRwDrH\ntksETGIApgBlxphDxph24DVgvsUxuZUxpsoYs9XxvJmePxTp1kblfiKSAdwKPGd1LJ4iIjHATTjW\nNDHGtBtjmqyNyiOCgHARCQIGAZUWx+MWxpiPgIaLds8HFjueLwYWuOr9AikxpAPlvbaPEwB/JM8R\nkWxgArDR2kg84inge0C31YF40FCgDnjBUYX2nIhEWB2UOxljKoBfA8eAKuCkMWaNtVF5VLIxpsrx\nvBpIdtULB1JiCFgiEgm8CfyrMeaU1fG4k4jcBtQaY7ZYHYuHBQETgd8bYyYAZ3Bh1YI3ctSpz6cn\nKaYBESLygLVRWcOxVLLLupgGUmKoADJ7bWc49vk1EQmmJym8Yox5y+p4POB6YJ6IHKGnunC6iLxs\nbUgecRw4bow5VyJ8g55E4c9mAoeNMXXGmA7gLeA6i2PypBoRSQVw/Kx11QsHUmLYDIwQkaEiEkJP\nI9Uyi2NyKxEReuqc9xhj/q/V8XiCMeYHxpgMY0w2Pf/HfzfG+P23SGNMNVAuIrmOXTOAUgtD8oRj\nwFQRGeT4XZ+Bnze4X2QZsMjxfBGw1FUvHOSqF/J2xphOEfk6sJqe3gvPG2NKLA7L3a4HvgjsEpHt\njn0/NMassDAm5T7fAF5xfPE5BHzZ4njcyhizUUTeALbS0wNvG346AlpEXgWmAQkichz4MfAEsERE\nHqZntul7XPZ+OvJZKaVUb4FUlaSUUqofNDEopZS6gCYGpZRSF9DEoJRS6gKaGJRSSl1AE4NSSqkL\naGJQSil1AU0MSimlLvD/A7MO4+Q1g5xoAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Read the data into a different variable\n", "inData = loadtxt(outFile)\n", "t2 = inData[:,0] # Note that Python starts at \"0\"!\n", "x2 = inData[:,1]\n", "\n", "# Note: Python used (...) for function arguments, and [...] for indexing.\n", "\n", "# Plot the data\n", "plot(t,cos(t))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Rotating a Vector" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "When working with vectors and matrices, keep the following things in mind\n", "* By default, data are vectors.\n", "* Use *array* when you want to generate matrices." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Noisy Data and Linefits" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Fit the following function: $y = k*x + d$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Generate a noisy line\n", "t = arange(-100,100)\n", "\n", "# use a Python \"dictionary\" for named variables\n", "par = {'offset':100, 'slope':0.5, 'noiseAmp':4}\n", "x = par['offset'] + par['slope']*t + par['noiseAmp']*randn(len(t))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Boolean indexing works in Python: select \"late\" values, i.e. with t>10\n", "xHigh = x[t>10]\n", "tHigh = t[t>10]\n", "\n", "# Plot the \"late\" data\n", "plot(tHigh, xHigh)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([3, 4, 5, 6, 7])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Boolean indices can be combined:\n", "x = arange(10)\n", "topRange = x>2\n", "bottomRange = x<8\n", "x[topRange & bottomRange]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ " ## Fitting a line to the data" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# Determine the best-fit line\n", "# To do so, you have to generate a so-called Design Matrix, with \"time\" in the first\n", "# column, and a column of \"1\" in the second column:\n", "xMat = vstack((tHigh, ones(len(tHigh)))).T\n", "slope, intercept = linalg.lstsq(xMat, xHigh)[0]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fit line: intercept = 100.251, and slope = 0.488\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Show and plot the fit, and save it to a PNG-file with a medium resolution.\n", "# The \"modern\" way of Python-formatting is used\n", "plot(tHigh, xHigh)\n", "plot(tHigh, intercept + slope*tHigh, 'r')\n", "savefig('linefit.png', dpi=200)\n", "print('Fit line: intercept = {0:5.3f}, and slope = {1:5.3f}'.format(intercept, slope))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Pandas" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: y R-squared: 0.885\n", "Model: OLS Adj. R-squared: 0.884\n", "Method: Least Squares F-statistic: 671.9\n", "Date: Sat, 04 Feb 2017 Prob (F-statistic): 1.09e-42\n", "Time: 14:27:52 Log-Likelihood: -260.40\n", "No. Observations: 89 AIC: 524.8\n", "Df Residuals: 87 BIC: 529.8\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 100.2512 1.143 87.697 0.000 97.979 102.523\n", "x 0.4881 0.019 25.921 0.000 0.451 0.526\n", "==============================================================================\n", "Omnibus: 0.760 Durbin-Watson: 1.719\n", "Prob(Omnibus): 0.684 Jarque-Bera (JB): 0.850\n", "Skew: -0.204 Prob(JB): 0.654\n", "Kurtosis: 2.750 Cond. No. 143.\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" ] } ], "source": [ "# If you want to know confidence intervals, best switch to *pandas*\n", "# Pandas is mainly used for statistics and worksheet-like data\n", "import pandas\n", "\n", "# The calculation of OLS has been moved to *statsmodels* now\n", "import statsmodels.formula.api as smf\n", "\n", "# Note that this is an advanced topic, and requires new data structures\n", "# such ad \"DataFrames\" and \"ordinary-least-squares\" or \"ols-models\".\n", "myDict = {'x':tHigh, 'y':xHigh}\n", "df = pandas.DataFrame(myDict)\n", "model = smf.ols('y~x', df).fit()\n", "print(model.summary())" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# More Python Info on the Web" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "[http://scipy-lectures.github.com/](http://scipy-lectures.github.com/) Python Scientifc Lecture Notes. **If you read nothing else, read this!**\n", "\n", "[http://wiki.scipy.org/NumPy_for_Matlab_Users/](http://wiki.scipy.org/NumPy_for_Matlab_Users/) Start here if you have lots of Matlab experience.\n", "\n", "[https://docs.python.org/3.6/tutorial/](https://docs.python.org/3.6/tutorial/) The Python tutorial. The original introduction.\n", "\n", "[http://jrjohansson.github.com/](http://jrjohansson.github.com/) Lectures on scienti\f", "c computing with Python. Great ipython notebooks!" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 0 }