diff --git a/Section_10_LibreOffice.ipynb b/Section_10_LibreOffice.ipynb index b781a94..2e583c3 100644 --- a/Section_10_LibreOffice.ipynb +++ b/Section_10_LibreOffice.ipynb @@ -1,5 +1,14 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Important notice\n", + "\n", + "Please note that from 2019 LibreOffice is no longer used in the MPR 213 module, which to a large extent makes this file or section irrelevant. The Excel spreadsheet which is used to illustrate all the Excel functions, in 2019, is available on clickUP." + ] + }, { "cell_type": "markdown", "metadata": { @@ -537,7 +546,7 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -551,7 +560,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/Section_11_Reading_And_Writing_Data.ipynb b/Section_11_Reading_And_Writing_Data.ipynb index 1cd2ee3..49dab2d 100644 --- a/Section_11_Reading_And_Writing_Data.ipynb +++ b/Section_11_Reading_And_Writing_Data.ipynb @@ -11,7 +11,7 @@ "# Reading And Writing Data\n", "\n", "- [Overview](#Overview)\n", - "- [Data From LibreOffice](#Data-From-LibreOffice)\n", + "- [Data From Excel](#Data-From-Excel)\n", "- [Data Into Python](#Data-Into-Python)\n", "- [Dictionaries Introduction](#Dictionaries-Introduction)\n", "- [Data From Python](#Data-From-Python)\n" @@ -27,7 +27,7 @@ "source": [ "## Overview\n", "\n", - "- In *LibreOffice* $\\to$ save as `.csv.` or `.xlsx` files\n", + "- In *Excel* $\\to$ save as `.csv` or `.xlsx` files\n", "- In *Python* $\\to$ use the `pandas` module\n", "- Further `pandas` documentation:\n", " - [10 Minutes to Pandas](http://pandas.pydata.org/pandas-docs/stable/10min.html)\n", @@ -44,19 +44,16 @@ "source": [ "## Getting Data In/Out\n", "\n", - "### Data From *LibreOffice*\n", + "### Data From *Excel*\n", "\n", - "- Saving data $\\to$ Save As $\\to$ `ODF Spreadsheet (.ods)`\n", + "- Saving data $\\to$ Save As $\\to$ `xlsx Spreadsheet (.xlsx)`\n", "- Saving data $\\to$ Save As $\\to$ `Text CSV (.csv)`\n", " - Export settings:\n", " - Field delimiter $\\to$ separates data by this character\n", - " - Text delimiter $\\to$ wraps text with this character\n", - " - Quote all text cells $\\to$ adds Text delimiter to text\n", "- Saving data $\\to$ Save As $\\to$ `Microsoft Excel (.xlsx)`\n", - "- `.ods` vs `.csv` vs `.xlsx`\n", - " - `.ods` $\\to$ can't load data with `pandas`\n", + "- `.csv` vs `.xlsx`\n", " - `.csv` $\\to$ raw text data $\\to$ no formula are stored $\\to$ only values stored\n", - " - `.xlsx` $\\to$ similar to `.ods` $\\to$ stored formula and values" + " - `.xlsx` $\\to$ store formula and values" ] }, { @@ -88,20 +85,80 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { + "scrolled": false, "slideshow": { "slide_type": "subslide" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " x coord y coord dist in circle\n", + "0 1.405 -1.217 1.859 True\n", + "1 1.814 -0.096 1.817 True\n", + "2 -0.857 1.391 1.633 True\n", + "3 -0.125 -0.258 0.286 True\n", + "4 1.714 -1.784 2.474 False\n", + "5 0.535 0.609 0.811 True\n", + "6 0.150 0.055 0.160 True\n", + "7 -0.731 1.646 1.801 True\n", + "8 0.205 -1.371 1.387 True\n", + "9 1.096 0.639 1.269 True\n", + "10 -1.733 -1.491 2.286 False\n", + "11 1.287 -1.864 2.265 False\n", + "12 0.548 0.233 0.595 True\n", + "13 -1.293 -1.285 1.823 True\n", + "14 0.335 0.204 0.392 True\n", + "15 -0.574 0.257 0.629 True\n", + "16 -1.296 -0.828 1.538 True\n", + "17 0.560 1.776 1.862 True\n", + "18 0.467 0.668 0.816 True\n", + "19 -1.986 -0.816 2.147 False\n", + "20 1.264 1.437 1.914 True\n", + "21 0.825 -0.538 0.985 True\n", + "22 -0.429 1.559 1.617 True\n", + "23 -0.448 -0.358 0.574 True\n", + "24 0.116 0.126 0.171 True\n", + "25 -1.562 1.086 1.903 True\n", + "26 1.677 -1.561 2.291 False\n", + "27 -0.102 0.235 0.256 True\n", + "28 -1.494 1.144 1.881 True\n", + "29 -0.808 -0.845 1.169 True\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "\n", - "pdata = pd.read_csv('data_files/darts_data.csv')\n", - "# print(pdata)\n", + "#pdata = pd.read_csv('data_files/darts_data.csv')\n", + "pdata = pd.read_csv('data_files\\darts_data.csv')\n", + "print(pdata)\n", "# print(pdata.index)\n", "# print(pdata.columns)\n", "# print(pdata.values)\n", @@ -119,19 +176,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "slideshow": { "slide_type": "subslide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "\n", - "pdata = pd.read_excel('data_files/darts_data.xlsx', sheet_name='Sheet1')\n", + "#pdata = pd.read_excel('data_files/darts_data.xlsx', sheet_name='Sheet1')\n", + "pdata = pd.read_excel('data_files\\darts_data.xlsx', sheet_name='Sheet1')\n", "# print(pdata)\n", "# print(pdata.index)\n", "# print(pdata.columns)\n", @@ -161,9 +240,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'x': [2, 5, 1, 0, 9], 'y': [1], 'z': [0, 1, 2], 'name': 'SomeName'}\n", + "[2, 5, 1, 0, 9]\n", + "SomeName\n", + "2\n", + "2\n" + ] + } + ], "source": [ "var = {\n", " 'x': [2, 5, 1, 0, 9],\n", @@ -184,9 +275,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "[4 2 5 1]\n", + "[ 8 4 10 2]\n" + ] + } + ], "source": [ "import numpy as np\n", "\n", @@ -219,9 +320,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "180\n" + ] + } + ], "source": [ "atomic_weight = {\n", " 'H': 1,\n", @@ -245,9 +354,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "180\n" + ] + } + ], "source": [ "atomic_weight = {'H': 1, 'C': 12, 'N': 14, 'O': 16, 'S': 32}\n", "\n", @@ -290,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" @@ -343,11 +460,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", + "#%matplotlib qt5\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "\n", @@ -363,6 +492,66 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Re-shape in Numpy" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 6],\n", + " [2, 7],\n", + " [3, 8],\n", + " [4, 9],\n", + " [5, 0]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "aa = np.array([1,2,3,4,5,6,7,8,9,0])\n", + "bb = np.copy(aa)\n", + "aa = np.reshape(aa,(5,2),'F')\n", + "aa" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2],\n", + " [3, 4],\n", + " [5, 6],\n", + " [7, 8],\n", + " [9, 0]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bb = np.reshape(bb,(5,2))\n", + "bb" + ] + }, { "cell_type": "code", "execution_count": null, @@ -388,7 +577,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.1" } }, "nbformat": 4, diff --git a/Section_12_Matrices.ipynb b/Section_12_Matrices.ipynb index 3507cc8..26f076c 100644 --- a/Section_12_Matrices.ipynb +++ b/Section_12_Matrices.ipynb @@ -12,7 +12,9 @@ "\n", "- [Arrays Recap](#Arrays-Recap)\n", "- [Lists vs Arrays](#Lists-vs-Arrays)\n", - "- [Matrices](#Matrices)\n" + "- [Matrices](#Matrices)\n", + "- [2D Lists](#2D-Lists)\n", + "- [Other Numpy matrix functions useful in general engineering](#Other-Numpy-matrix-functions-useful-in-general-engineering)\n" ] }, { @@ -61,7 +63,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -99,9 +100,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -132,9 +131,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -157,9 +154,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -199,9 +194,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -234,9 +227,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -305,9 +296,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -327,7 +316,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -394,14 +382,16 @@ "- `numpy.zeros` function\n", "\n", "\n", - "- `numpy.dot` function" + "- `numpy.dot` function\n", + "\n", + "\n", + "- @ operator" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -440,7 +430,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -466,7 +455,9 @@ "print(\"\\nManual dot calculation 2:\")\n", "print(my_dot_v2(mat1, mat2))\n", "print(\"\\nNumpy dot calculation:\")\n", - "print(np.dot(mat1, mat2))" + "print(np.dot(mat1, mat2))\n", + "print(\"\\n@ operator calculation:\")\n", + "print(mat1@mat2)" ] }, { @@ -512,7 +503,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -543,7 +533,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -572,14 +561,12 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", + "# import numpy as np\n", "\n", - "np.lookfor('upper diagonal')" + "# np.lookfor('upper diagonal')" ] }, { @@ -631,7 +618,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -657,7 +643,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "subslide" } @@ -680,23 +665,121 @@ "print (smat)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2D Lists\n", + "\n", + "- List of lists\n", + "- Creating a list of lists \n", + "- Indexing" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true, "slideshow": { "slide_type": "skip" } }, "outputs": [], - "source": [] + "source": [ + "lol1 = [[1,2,3,4],[5,6,7],['Spain','Portugal','Greece']]\n", + "print(lol1)\n", + "type(lol1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lol1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#lol1[2,1]\n", + "lol1[2] # 3rd list" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lol1[2][1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lol1[2][1] = 'Italy'\n", + "lol1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Other Numpy matrix functions useful in general engineering\n", + "\n", + "The following was not formally taught in the MPR 213 module and will therefore not be tested in the exam. This information is supplied to assist students in using Python effectively in their further engineering studies.\n", + "\n", + "Use `help` or `numpy.info` to get help on how to use these functions:\n", + "\n", + "- cross product of two vectors: `numpy.cross`\n", + "- Solution of system of linear equations (essentially Gaussian elimination): `numpy.linalg.solve`\n", + "- Calculation of eigenvalues and eigenvectors of a square matrix: `numpy.linalg.eig`\n", + "\n", + "### Example of cross product calculation:\n", + "\n", + "Let us define the unit vectors in the Cartesian $x$, $y$ and $z$ directions, $\\vec{\\imath}$, $\\vec{\\jmath}$ and $\\vec{k}$, respectively, as three one-dimensional numpy arrays `ii`, `jj`, and `kk`, respectively:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "ii = np.array([1.0, 0.0, 0.0])\n", + "jj = np.array([0.0, 1.0, 0.0])\n", + "kk = np.array([0.0, 0.0, 1.0])\n", + "\n", + "should_be_kk = np.cross(ii,jj)\n", + "should_be_ii = np.cross(jj,kk)\n", + "should_be_jj = np.cross(kk,ii)\n", + "\n", + "should_be_minus_kk = np.cross(jj,ii)\n", + "\n", + "should_be_zero = np.cross(ii,ii)\n", + "\n", + "print('should_be_kk = ',should_be_kk)\n", + "print('should_be_ii = ',should_be_ii)\n", + "print('should_be_jj = ',should_be_jj)\n", + "print('should_be_minus_kk = ',should_be_minus_kk)\n", + "print('should_be_zero = ',should_be_zero)" + ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -710,7 +793,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.7.1" } }, "nbformat": 4,