{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![](ChemE_logo.png \"ChemE Logo\")\n", "\n", "# Easy Python\n", "by [Tony Saad](www.tonysaad.net)
\n", "Assistant Professor of [Chemical Engineering](www.che.utah.edu)
\n", "[University of Utah](www.utah.edu)\n", "\n", "\n", "Please press the right arrow on your keyboard to proceed." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "This is an easy guide for learning Python. In my opinion, you don't need more than this guide to get started with Python. Once you get familiar with the syntax you can dig deeper on your own." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In fact, my attitude towards programming consists of the following two steps:\n", "1. Articulate what you want to accomplish (e.g. `I need to sort this array`)\n", "2. google it! (e.g. `how to sort an array in Python?`)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "As an engineer, programming languages are fundamental tools in my arsenal to tackle research problems. But they are only a means to an end. Therefore, I am happy to learn programming by mimicking what other professional programmers and software developers do. That's why google is your best friend." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "A key reference used for this guide is: Numerical Methods in Engineering with Python 3 by Jaan Kiusalaas." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Python: Anyone Can Code!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "![anyone can code](anyonecancode.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Python is a modern programming language that is very easy to use. Python promotes productivity and a clear focus on accomplishing the tasks at hand." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In an age of extreme technology and unsurpassed information exchange, it is unacceptable for a modern engineer to **NOT** know a programming language. Python stands among the easiest and most enjoyable programming languages out there." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "If there's ever an example of why someone needs to learn programming, here it is:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/jpeg": "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MnCVQ7yOSAvBU7WJ/SJcG9ua5nvAaXNyOU8hR4pNRirBFOzKg8PrIacPxdJt1EfFfLjVx5nVYbo6a2+HWUOZUgj+0x/AsR8joKseE7QYzD4cYWze7uwJhFS1PiYsZuZO8MkmZc6abACjo6Ojp7UNR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFHR0dHRRR0dHR0UUdHR0dFFf/Z\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('2o4Mk_CPqRk',width=600, height=300)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Back in the 60s, when our nation needed it the most... It was programming that saved the day! (Thanks to Dr. Sean Smith for the suggestion to include a clip from the movie Hidden Figures)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import IFrame\n", "IFrame('https://trinket.io/embed/python3/f144398a16',width=\"100%\",height=300)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here's why you should learn Python:\n", "1. Because your future will likely depend on it. Programming job trends rank python among the [top](https://www.indeed.com/jobtrends/q-%22C++%22-q-Matlab-q-Python.html). Moreover, coding Dojo places python [Numero Uno](http://www.codingdojo.com/blog/our-approach-to-curriculum/).\n", "2. Python is **FREE**!\n", "3. It is very easy to get started programming with Python\n", "5. Python is very forgiving\n", "6. There is significant community support around Python\n", "7. You can even use Python in a web browser!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Obtaining Python: (Can't you just Google it?)\n", "My favorite way of obtaining python is to download the Anaconda distribution: http://www.anaconda.com. Once you install it, Python mysteriously resides on your computer." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Executing Python Code\n", "There are a few ways you can run Python:\n", "1. Write your code in a text file with the extension **`py`**. Then from the terminal type **`python myPythonCode.py`**\n", "2. Use one of the editors that ship with python. Anaconda ships with `Spyder`. Another famous editor is called `PyCharm` . Using these editors (actually Integrated Development Environments, IDEs), you can write code and execute it on the spot.\n", "3. Use **`Jupyter Notebook`**. This my favorite approach as it allows you to write Python code from within your browser and mix it with text and equation. Simply open up a terminal (command prompt on windows) and type **`jupyter notebook`**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a Markdown cheat sheet - the language used to write text in Jupyter Notebooks." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "For more information on jupyter notebooks, please see this guide by Prof. James Sutherland." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Core Python\n", "Python has a bunch of key core functionality including the ability to define variables, strings, lists and other types. Let's get started:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Variables\n", "Variables, just like any programming language, can be declared and assigned *on the spot*" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "33\n" ] } ], "source": [ "myVar = 33 # my var is an integer in this case\n", "print(myVar) # this will print the value of myVar" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "99.0\n" ] } ], "source": [ "b = 3.0 * myVar # b is now floating point variable\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Note that Python automatically detects the data type of a variable. This is called dynamic typing." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Strings\n", "Strings are a special type of variable that represent text. Simply use single (or double) quotations to define a string variable." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is my first string variable.\n" ] } ], "source": [ "str1 = 'This is my first string variable.'\n", "print(str1)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "this is also another string\n" ] } ], "source": [ "str2 = \"this is also another string\"\n", "print(str2)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can concatenate strings together:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is my first string variable.this is also another string\n" ] } ], "source": [ "str3 = str1 + str2\n", "print(str3)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "and you can add extra strings in between" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is my first string variable. this is also another string.\n" ] } ], "source": [ "str4 = str1 + \" \" + str2 + \".\"\n", "print(str4)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Strings represent an **immutable** list of characters - that is, you *cannot* assign values of individual characters - otherwise, you will get an error." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "ename": "TypeError", "evalue": "'str' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstr4\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'b'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'str' object does not support item assignment" ] } ], "source": [ "str4[2]='b'" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "But you can certainly loop through a string:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "s\n", "t\n", "r\n", "i\n", "n\n", "g\n" ] } ], "source": [ "newstr = 'string'\n", "for val in newstr: # you will learn about this kind of loop later\n", " print(val)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Tuples" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "A tuple is an **immutable** sequence of **arbitrary** objects separated by commas and enclosed in parentheses." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "a=(1,'b',2)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can access items in a tuple" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n" ] } ], "source": [ "print(a[2])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "but cannot modify the contents because they are immutable" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2.0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "source": [ "a[3]=2.0" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Lists" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Lists are a like tuples but are **mutable**. They are defined using square brackets with items separated by a comma." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 'b']\n" ] } ], "source": [ "myList = [1,2,3,'b']\n", "print(myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can modify items in a list" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 'a']\n" ] } ], "source": [ "myList[3]='a'\n", "print(myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can append items to a list" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 'a', 43]\n" ] } ], "source": [ "myList.append(43)\n", "print(myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can also insert items in a list at a specified location" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 'inserted item', 'a', 43]\n" ] } ], "source": [ "myList.insert(3,'inserted item')\n", "print(myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can create a list of lists as well" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1, 2, 3], [5, 7, 8], [17, 0, 9]]\n" ] } ], "source": [ "b = [[1,2,3],\n", " [5,7,8],\n", " [17,0,9]]\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can create an empty list with: x = [] and then you can append things to it." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 'apple']\n" ] } ], "source": [ "x =[]\n", "x.append(1)\n", "x.append('apple')\n", "print(x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "For scientific computing applications, it is recommended to use numpy arrays instead of lists. We will look at [numpy](#The-Almighty-numpy) arrays a little bit later." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### WARNING!\n", "If `b` is a list, then the assignment `a = b` does **NOT** create a copy of `b`. Instead, `a` **AND** `b` both point to the same data. So if you change `a`, `b` will also change. and vice versa." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b = [1, 3, 5]\n", "a = [1, 3, 1.11]\n", "b is now also changed to: [1, 3, 1.11]\n" ] } ], "source": [ "b=[1,3,5] # create a list called b\n", "print(\"b = \", b) # b should be [1,3,5]\n", "a = b # a is [1,3,5]\n", "a[2]=1.11 # a is [1,3,1.11] BUT THIS ALSO CHANGES b!\n", "print(\"a = \", a)\n", "print(\"b is now also changed to: \", b) # b is [1,3,1.11]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "If you want to make a copy, you should use: `a = b.copy()`" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b = [1, 3, 5]\n", "a = [1, 3, 1.11]\n", "b remains unchanged: [1, 3, 5]\n" ] } ], "source": [ "b=[1,3,5] # create a list called b\n", "print(\"b = \", b) # b should be [1,3,5]\n", "a = b.copy() # a is [1,3,5]\n", "a[2]=1.11 # a is [1,3,1.11] BUT THIS ALSO CHANGES b!\n", "print(\"a = \", a)\n", "print(\"b remains unchanged: \", b) # b is [1,3,1.11]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Displaying Variables" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can display variables simply by typing them" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'inserted item', 'a', 43]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "myList" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "or by using print" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 'inserted item', 'a', 43]\n" ] } ], "source": [ "print(myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can also format things using print" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is my list: [1, 2, 3, 'inserted item', 'a', 43]\n" ] } ], "source": [ "print('This is my list:', myList)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Arithmetic Operators\n", "Python supports basic math operators. You can use those on almost ANYTHING in python!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "| Operation | Symbol |\n", "| ------------- |:-------------:|\n", "| Addition | + |\n", "| Subtraction | - |\n", "| Multiplication | * |\n", "| Division | / |\n", "| Exponentiation | \\*\\* |\n", "| Modulus | % |\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can also use augmented assignements\n", "\n", "| Operation | Meaning |\n", "| ------------- |:-------------:|\n", "| a += b | a = a + b |\n", "| a -= b | a = a -b |\n", "| a \\*= b | a = a\\*b |\n", "| a /=b | a = a/b |\n", "| a \\*\\*= b | a = a\\*\\*b |\n", "| a %= b | a = a % b |\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Comparison Operators\n", "Python also supports all basic comparison operators. These work on almost everything in Python - but make sure you understand their meaning!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "| Symbol | Meaning |\n", "| ------------- |:-------------:|\n", "| < | Less than |\n", "| > | Greater than |\n", "| <= | Less than or equal to |\n", "| >= | Greater than or equal to |\n", "| == | Equal to |\n", "| != | Not equal to |\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "When different data types are compared to each other, they are first converted, when possible, to a common type and then compared. Such is the case for example when comparing an integer and a float." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] } ], "source": [ "a = 2 # a is an integer\n", "b = 2.1 # b is a float\n", "print(a>b) # converts both numbers to a float" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "When a conversion to a common type is not possible, then in general, objects are considered to be unequal." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] } ], "source": [ "a=2\n", "b='2.1'\n", "print(a==b)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Conditionals (If statements)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can use if statements to analyze the condition of a variable during runtime. An if statements looks like:\n", "```python\n", "if condition:\n", " do something\n", "elif condition2:\n", " do something else\n", "else:\n", " all other cases\n", "```\n", "Don't forget indentation! For the **condition**, You can use any of the comparison operators introduced earlier." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "positive\n" ] } ], "source": [ "a = 1\n", "if a < 0.0:\n", " print ('negative')\n", "elif a > 0.0:\n", " print ('positive')\n", "else:\n", " print('neither negative nor positive')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Loops\n", "Loops are cool." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### While Loops" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "A While loop consists of the following:\n", "```python\n", "while condition:\n", " do something cool\n", "```" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "n = 0\n", "n = 1\n", "n = 2\n" ] } ], "source": [ "nMax = 3\n", "n = 0\n", "while n < nMax:\n", " print ('n =', n)\n", " n += 1" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Sometimes, you need to do something special if the condition of the while loop is not satisfied. You can use an else statement in that case:\n", "```python\n", "while condition:\n", " do something as long as condition is true\n", "else:\n", " do something else when condition is no longer true\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "n = 0\n", "n = 1\n", "n = 2\n", "Done!\n" ] } ], "source": [ "nMax = 3\n", "n = 0\n", "while n < nMax:\n", " print ('n =', n)\n", " n += 1\n", "else:\n", " print(\"Done!\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### For Loops" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "One of the greatest features of python is that almost everything is iterable! If you have a collection of things, you can simply use a for loop to go through the list: \n", "\n", "```python \n", "for item in sequence:\n", " do something\n", "```" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "4\n", "5\n", "6\n", "7\n" ] } ], "source": [ "a = [1,4,5,6,7]\n", "for val in a: # iterate or loop through the items in a\n", " print(val)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The other way to do this is to loop through a range using the range function:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i a[i]\n", "------\n", "0 1\n", "1 4\n", "2 5\n" ] } ], "source": [ "print('i a[i]')\n", "print('------')\n", "for i in range(0,3):\n", " print (i,' ', a[i])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The `range` function returns a sequence of numbers: \n", "\n", "```python\n", "range(nMin, nMax) = [nMin, nMin + 1, nMin + 2, ..., nMax -1]\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "As usual, you can break and continue for loops." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "3\n", "45\n", "found value - exiting loop.\n" ] } ], "source": [ "# example of breaking a for loop\n", "seq = [1,3,45,2,4]\n", "for val in seq:\n", " if (val == 2):\n", " print('found value - exiting loop.')\n", " break\n", " print(val)\n", " " ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]\n" ] } ], "source": [ "# example of continue in a for loop\n", "x = [] # Create an empty list\n", "for i in range(1,100):\n", " if i%7 != 0: continue # If not divisible by 7, skip rest of loop\n", " x.append(i) # Append i to the list\n", "print(x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Functions" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Functions in Python are defined using the following convention:\n", "```python\n", "def function(arg1, arg2, ...):\n", " statements\n", " return return_values\n", "```\n", "where `arg1, arg2, ...` are the function arguments. Arguments can be any Python objects and even other functions. They can be given defaults values which makes using the argument optional." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Let's now define a function that computes first and second derivatives of any differentiable function. Here's what our function looks like:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def derivatives(f,x,h=0.0001): # h has a default value, \n", " df =(f(x+h) - f(x-h))/(2.0*h) # compute first dervative\n", " ddf =(f(x+h) - 2.0*f(x) + f(x-h))/h**2 # compute second derivative\n", " return df,ddf # return first & second derivatives" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Let's now call `derivatives` on the inverse tangent function (`atan`)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.3717472125930321 -0.3593095820875192\n" ] } ], "source": [ "from math import atan # we need to import atan from the math module - you'll learn this later\n", "df, ddf = derivatives(atan, 1.3) # call the derivatives function on atan at the point x = 1.3\n", "print(df,ddf) # print the results" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Functions can be documented using docstring." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def my_function(x,y,a):\n", " \"\"\"The function's documentation goes here. you can add whatever description you like.\n", " Arguments:\n", " x: axial position\n", " y: vertical position\n", " a: acceleration\n", " Todo:\n", " * add error checking\n", " \"\"\"\n", " return x*y + a" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Your documentation will look something like this:\n", "![](python_doc_example.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Functions can be defined inline in a python file (just like we did here), or, they can be placed in **`modules`**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modules" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Modules consist of a collection of functions and placed together in a module for convenience. Functions in a module can be accessed by *importing* them from the module\n", "```python\n", "from module_name import function\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Modules are simply Python files (.py). The module name is the same as the filename." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Accessing Functions in a Module" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "There are three ways to access functions in a module:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "```python \n", "from module_name import *```\n", "Which loas ALL functions in the module. While this is certainly allowed, it is (1) wasteful since Python will load all functions definitions into memory, and (2) it can lead to ambiguity if other modules have similar function defitions. For example, the `sine` function is defined in the modules: `math`, `cmath`, and `numpy`." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1051709180756477\n" ] } ], "source": [ "from math import *\n", "print(exp(0.1))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "```python\n", "from module_name import function1, function2,...\n", "```\n", "Imports only the specified functions from the module. This is certainly safer but may lead to conflicts if you're not careful" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.5306054094646787\n" ] } ], "source": [ "from math import exp, log, sinh\n", "x = 0.23\n", "print(exp(x**2) + log(x) - sinh(x/2))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "```python\n", "import module_name\n", "```\n", "Imports the module which allows you to access function definitions in the module using: `module_name.function1` etc...\n", "This is by far the least ambiguous path." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can also nickname a module for easy access\n", "```python \n", "import module_name as m\n", "```\n", "Then, you'd access functions in `module_name` using: `m.function1`." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "(-1+1.2246467991473532e-16j)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import cmath as cm # cmath library supports complex numbers\n", "π = cm.pi # define pi\n", "x = π*1j # complex number\n", "cm.exp(x) # e^(iπ) = -1" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The contents of a module can be listed using:\n", "```python \n", "dir(module_name)```" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "['__doc__',\n", " '__file__',\n", " '__loader__',\n", " '__name__',\n", " '__package__',\n", " '__spec__',\n", " 'acos',\n", " 'acosh',\n", " 'asin',\n", " 'asinh',\n", " 'atan',\n", " 'atan2',\n", " 'atanh',\n", " 'ceil',\n", " 'copysign',\n", " 'cos',\n", " 'cosh',\n", " 'degrees',\n", " 'e',\n", " 'erf',\n", " 'erfc',\n", " 'exp',\n", " 'expm1',\n", " 'fabs',\n", " 'factorial',\n", " 'floor',\n", " 'fmod',\n", " 'frexp',\n", " 'fsum',\n", " 'gamma',\n", " 'gcd',\n", " 'hypot',\n", " 'inf',\n", " 'isclose',\n", " 'isfinite',\n", " 'isinf',\n", " 'isnan',\n", " 'ldexp',\n", " 'lgamma',\n", " 'log',\n", " 'log10',\n", " 'log1p',\n", " 'log2',\n", " 'modf',\n", " 'nan',\n", " 'pi',\n", " 'pow',\n", " 'radians',\n", " 'sin',\n", " 'sinh',\n", " 'sqrt',\n", " 'tan',\n", " 'tanh',\n", " 'tau',\n", " 'trunc']" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import math\n", "dir(math)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Another module that you may find useful is the `cmath` module. It supports the same functions as the `math` module but allows the use of complex numbers for function arguments." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "['__doc__',\n", " '__file__',\n", " '__loader__',\n", " '__name__',\n", " '__package__',\n", " '__spec__',\n", " 'acos',\n", " 'acosh',\n", " 'asin',\n", " 'asinh',\n", " 'atan',\n", " 'atanh',\n", " 'cos',\n", " 'cosh',\n", " 'e',\n", " 'exp',\n", " 'inf',\n", " 'infj',\n", " 'isclose',\n", " 'isfinite',\n", " 'isinf',\n", " 'isnan',\n", " 'log',\n", " 'log10',\n", " 'nan',\n", " 'nanj',\n", " 'phase',\n", " 'pi',\n", " 'polar',\n", " 'rect',\n", " 'sin',\n", " 'sinh',\n", " 'sqrt',\n", " 'tan',\n", " 'tanh',\n", " 'tau']" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import cmath\n", "dir(cmath)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# The Almighty numpy" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Numpy is one of the most famous python libraries for scientific computing. `num` stands for numerical and `py` stands for python (yeah, Python programmers are obsessed with using `py` in naming their projects). Numpy is the standard library for numerical computing with python. It provides powerful array functionality that beats python lists. Let's look at some numpy features." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Numpy Arrays" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Numpy arrays are similar to Python lists but can be manipulated in fantastic ways by other functions in the numpy library. They are by far the standard in python-based scientific computing. See [here for more details](https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "A numpy array can be created several ways. It can be created from a list" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[2 4]\n", " [2 3]]\n" ] } ], "source": [ "import numpy as np # don't forget to import numpy\n", "myList = [[2,4],[2,3]] #\n", "a = np.array(myList)\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "It can also be created from a tuple" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3]\n" ] } ], "source": [ "myTuple = (1,2,3)\n", "a = np.array(myTuple)\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "source": [ "You can initialize empty numpy arrays:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-2.00000000e+000 3.11107857e+231]\n", " [-2.00000000e+000 2.82464218e-309]]\n" ] } ], "source": [ "a = np.empty((2,2)) # 2x2 array\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can also create arrays of zeros or ones:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0.]\n", " [0. 0. 0.]\n", " [0. 0. 0.]]\n", "[[1. 1.]\n", " [1. 1.]]\n" ] } ], "source": [ "a = np.zeros((3,3))\n", "b = np.ones((2,2))\n", "print(a)\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "One useful numpy function is `arange`. It works like the standard `range` function, but returns an array instead of a sequence. It looks like this:\n", "```python\n", "arange(start, stop, step)\n", "```" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 3 6 9]\n" ] } ], "source": [ "a = np.arange(0,10,3) # go from 0 to 10 in steps of 3\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2\n", "0\n", "2\n" ] } ], "source": [ "for i in np.arange(-2,3,2): # use arange to loop\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Another useful numpy functionality is `linspace`. With `linspace`, you can create an array of equally spaced real numbers. This is particularly useful if you're defining a grid. Here's an example" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1. -0.77777778 -0.55555556 -0.33333333 -0.11111111 0.11111111\n", " 0.33333333 0.55555556 0.77777778 1. ]\n" ] } ], "source": [ "x = np.linspace(-1,1,10)\n", "print(x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "you can use linspace to compute (and plot) a function" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline \n", "import matplotlib.pyplot as plt # you will learn this later\n", "import numpy as np\n", "x = np.linspace(-1,1,100)\n", "y = np.exp(-x**2/0.1)\n", "plt.plot(x,y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Accessing Numpy Arrays" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Numpy arrays can be accessed using the bracket operator and are indexed by row and column (by default). If a is an `nxn` array, then `a[i,j]` refers to row `i` and column `j`. " ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0.]\n", " [0. 0.]]\n", "[[ 0. 33.]\n", " [ 0. 0.]]\n" ] } ], "source": [ "a = np.zeros((2,2)) # create a 2x2 array of zeros\n", "print(a)\n", "a[0,1] = 33 # change element a[0,1]\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "On the other hand, `a[i]` refers to the *entire* ith row" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 2.]\n", " [3. 4.]]\n" ] } ], "source": [ "a = np.zeros((2,2)) # create a 2x2 array of zeros\n", "a[0] = [1,2]\n", "a[1] = [3,4]\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "and `a[:,j]` refers to the *entire* jth column." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 2.]\n", " [3. 4.]]\n" ] } ], "source": [ "a = np.zeros((2,2)) # create a 2x2 array of zeros\n", "a[:,0] = [1,3]\n", "a[:,1] = [2,4]\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The colon in `a[:,0]` allows you to select a subset of an array. In general is works as: `i:j` will return the subset array consisting of the elements `a[i]` to `a[j-1]`" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4 5 6 7 8 9]\n", "[2 3 4]\n" ] } ], "source": [ "a = np.arange(1,10)\n", "print(a)\n", "print(a[1:4]) # return the subset array a[1] to a[3]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "If no numbers are provided around the colon (i.e. `a[:]`), then the entire range is returned" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4 5 6 7 8 9]\n" ] } ], "source": [ "a = np.arange(1,10)\n", "print(a[:])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here's a more complex example of how you can slice through a 4x4 matrix" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0.]\n", " [0. 0. 0. 0.]\n", " [0. 0. 0. 0.]\n", " [0. 0. 0. 0.]]\n" ] } ], "source": [ "a = np.zeros((4,4)) # create an array of zeros\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0. ]\n", " [0. 1.11 2.22 0. ]\n", " [0. 0. 0. 0. ]\n", " [0. 0. 0. 0. ]]\n" ] } ], "source": [ "# now change row 1, columns 1,2\n", "a[1,1:3] = [1.11,2.22]\n", "print(a)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0. 0. 0. 0. ]\n", " [0. 1.11 2.22 0. ]\n", " [0. 0. 0. 3.33]\n", " [0. 0. 0. 4.44]]\n" ] } ], "source": [ "#now change column 3, rows 2,3\n", "a[2:4,3]=[3.33,4.44]\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Operations on Numpy Arrays" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "You can operate on arrays using standard mathematical operators as long as the array sizes are consistent with the operation being carried out. All operations are carried out element-wise - that is, applied to each element one at a time." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0, 11, 24, 39, 56, 75, 96, 119, 144, 171])" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.arange(0,10) #[0,1,2,...,9]\n", "b = np.arange(10,20) #[10,11,...,19]\n", "a*b" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Mathematical functions provided by numpy will operate on numpy arrays element-wise" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "array([0. , 1. , 1.41421356, 1.73205081, 2. ,\n", " 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.arange(0,10) #[0,1,2,...,9]\n", "np.sqrt(a) # use sqrt provided by numpy" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "However, functions provided by other modules, such as the math module, are not guaranteed to work with numpy arrays" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "ename": "TypeError", "evalue": "only size-1 arrays can be converted to Python scalars", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmath\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#[0,1,2,...,9]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mmath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: only size-1 arrays can be converted to Python scalars" ] } ], "source": [ "import math\n", "a = np.arange(0,10) #[0,1,2,...,9]\n", "math.sqrt(a)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "In this case, the functions provided by the math module will work on one element at a time, not an entire list, e.g.\n", "```python\n", "math.sqrt(a[3])\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Diagonal" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "main diagonal = [4 4 3]\n", "lower diagonal = [-2 -2]\n", "upper diagonal = [-2 -2]\n" ] } ], "source": [ "import numpy as np\n", "A = np.array([[4,-2,1],\n", " [-2,4,-2],\n", " [1,-2,3]])\n", "d = np.diagonal(A) # main diagonal\n", "ud = np.diagonal(A,1) # first upper diagonal\n", "ld = np.diagonal(A,-1) # first lower diagonal\n", "print('main diagonal = ', d)\n", "print('lower diagonal = ', ld)\n", "print('upper diagonal = ', ud)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "you can also take the trace" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11\n" ] } ], "source": [ "tr = np.trace(A)\n", "print(tr)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "you can create an identity matrix" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1. 0. 0.]\n", " [0. 1. 0.]\n", " [0. 0. 1.]]\n" ] } ], "source": [ "idm = np.identity(3)\n", "print(idm)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Dot Product" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dot(x,y) =\n", " 17\n", "dot(A,x) =\n", " [13 27]\n", "dot(A,B) =\n", " [[5 5]\n", " [7 7]]\n" ] } ], "source": [ "from numpy import *\n", "x = array([7,3])\n", "y = array([2,1])\n", "A = array([[1,2],[3,2]])\n", "B = array([[1,1],[2,2]])\n", "\n", "# Dot product\n", "print(\"dot(x,y) =\\n\",dot(x,y)) # {x}.{y}\n", "print(\"dot(A,x) =\\n\",dot(A,x)) # [A]{x}\n", "print(\"dot(A,B) =\\n\",dot(A,B)) # [A][B]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "There's a shorter way of computing dot products. Instead of using `dot(x,y)`, you can use `x@y`" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x@y =\n", " 17\n", "A@x =\n", " [13 27]\n", "A@B =\n", " [[5 5]\n", " [7 7]]\n" ] } ], "source": [ "from numpy import *\n", "x = array([7,3])\n", "y = array([2,1])\n", "A = array([[1,2],[3,2]])\n", "B = array([[1,1],[2,2]])\n", "\n", "# Dot product\n", "print(\"x@y =\\n\",x@y) # {x}.{y}\n", "print(\"A@x =\\n\",A@x) # [A]{x}\n", "print(\"A@B =\\n\",A@B) # [A][B]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "This depends on your having Python3 installed. Try it, and if it works, then you're likely using python3." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "#### Inner Product" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "inner(x,y) =\n", " 17\n", "inner(A,x) =\n", " [13 27]\n", "inner(A,B) =\n", " [[ 3 6]\n", " [ 5 10]]\n" ] } ], "source": [ "from numpy import *\n", "x = array([7,3])\n", "y = array([2,1])\n", "A = array([[1,2],[3,2]])\n", "B = array([[1,1],[2,2]])\n", "\n", "# Inner product\n", "print(\"inner(x,y) =\\n\",inner(x,y)) # {x}.{y}\n", "print(\"inner(A,x) =\\n\",inner(A,x)) # [A]{x}\n", "print(\"inner(A,B) =\\n\",inner(A,B)) # [A][B_transpose]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "#### Outer Product" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "outer(x,y) =\n", " [[14 7]\n", " [ 6 3]]\n", "outer(A,x) =\n", " [[ 7 3]\n", " [14 6]\n", " [21 9]\n", " [14 6]]\n", "outer(A,B) =\n", " [[1 1 2 2]\n", " [2 2 4 4]\n", " [3 3 6 6]\n", " [2 2 4 4]]\n" ] } ], "source": [ "from numpy import *\n", "x = array([7,3])\n", "y = array([2,1])\n", "A = array([[1,2],[3,2]])\n", "B = array([[1,1],[2,2]])\n", "\n", "# Outer product\n", "print(\"outer(x,y) =\\n\",outer(x,y))\n", "print(\"outer(A,x) =\\n\",outer(A,x))\n", "print(\"outer(A,B) =\\n\",outer(A,B))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Linear Algebra" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Numpy ships with a linear algebra module named **`linalg`** that contains a collection of routines to aid in the solution and manipulation of systems of linear equations." ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1. 2.5 2. ]\n", "[1. 2.5 2. ]\n" ] } ], "source": [ "from numpy import array, dot\n", "from numpy.linalg import inv,solve # import inverse and solve from linalg\n", "A = array([[ 4.0, -2.0, 1.0],\n", " [-2.0, 4.0, -2.0],\n", " [ 1.0, -2.0, 3.0]])\n", "b = array([1.0, 4.0, 2.0])\n", "Ainv = inv(A)\n", "\n", "x = solve(A,b) # use built in solve\n", "print(x)\n", "\n", "xInv = dot(Ainv,b) # use Ainv . b\n", "print(xInv)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Beauty is in the Eyes of MatPlotLib" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or how to plot anything in Python!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Matplotlib is the de-facto standard for plotting in Python. Like numpy, matplotlib is a module and supports plotting all sorts of pythonic things." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here's a simple example plot:" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt # pyplot is the standard plotting library in matplotlib\n", "import numpy as np\n", "x = np.linspace(-1,1,200) # create 200 equally spaced points between -1 and 1\n", "y = np.exp(-x**2/0.01) # gaussian\n", "plt.plot(x,y) # plot y vs x" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "fragment" } }, "source": [ "you will notice that we imported `pyplot` from `matplotlib`. Also note that the statement `%matplotlib inline` is necessary **only** when using jupyter notebooks." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "you can label axes and add titles to plots:" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt # pyplot is the standard plotting library in matplotlib\n", "import numpy as np\n", "x = np.linspace(-1,1,200) # create 200 equally spaced points between -1 and 1\n", "y = np.exp(-x**2/0.01) # gaussian\n", "plt.title('Gaussian')\n", "plt.xlabel('xlabel', fontsize=18)\n", "plt.ylabel('ylabel', fontsize=16)\n", "plt.plot(x,y) # plot y vs x" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "you can plot multiple curves" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt # pyplot is the standard plotting library in matplotlib\n", "import numpy as np\n", "x = np.linspace(-1,1,200) # create 200 equally spaced points between -1 and 1\n", "y = np.exp(-x**2/0.01) # gaussian\n", "y2 = np.exp(-x**2/0.1)\n", "plt.title('Gaussians')\n", "plt.xlabel('position', fontsize=18)\n", "plt.ylabel('value', fontsize=16)\n", "plt.plot(x,y,x,y2) # plot y vs x and y2 vs x" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "you can also add markers and line styles" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt # pyplot is the standard plotting library in matplotlib\n", "import numpy as np\n", "x = np.linspace(-1,1,200) # create 200 equally spaced points between -1 and 1\n", "y = np.exp(-x**2/0.01) # gaussian\n", "y2 = np.exp(-x**2/0.1)\n", "plt.title('Gaussians')\n", "plt.xlabel('position', fontsize=18)\n", "plt.ylabel('value', fontsize=16)\n", "plt.plot(x,y,'r-*',x,y2,'b-.o') # plot y vs x and y2 vs x" ] } ], "metadata": { "celltoolbar": "Slideshow", "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.8" }, "toc": { "base_numbering": 1, "nav_menu": { "height": "405px", "width": "252px" }, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "710px", "left": "0px", "right": "auto", "top": "106px", "width": "190px" }, "toc_section_display": false, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }