Skip to content

Instantly share code, notes, and snippets.

@cmendl
Created October 22, 2018 22:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmendl/d41d53d8dad66f10685acd5bb5feac90 to your computer and use it in GitHub Desktop.
Save cmendl/d41d53d8dad66f10685acd5bb5feac90 to your computer and use it in GitHub Desktop.
Introduction to Python
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction to Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Based on \n",
"https://docs.python.org/3/tutorial/introduction.html \n",
"https://docs.scipy.org/doc/numpy/user/quickstart.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Basic arithmetic operations"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"2 + 3"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"50 - 5*6"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(50 - 5*6) / 4"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.666666666666667"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"17 / 3 # division always returns a floating point number in Python 3"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"17 // 3 # floor division discards the fractional part"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"17 % 3 # the % operator returns the remainder of the division"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"243"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3 ** 5 # 3 to the power of 5"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"900"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# variable assignment\n",
"width = 20\n",
"height = 5 * 9\n",
"width * height"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Strings"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'The Big Bang Theory'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'The Big Bang ' + \"Theory\""
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'spam spam spam '"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"3 * 'spam '"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"name = 'Mike'\n",
"height = 1.75"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mike is 1.75 meters tall.\n"
]
}
],
"source": [
"print(name, 'is', height, 'meters tall.')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Mike is 1.75 meters tall.'"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'{} is {} meters tall.'.format(name, height)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lists"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"squares = [1, 4, 9, 16, 25]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 4, 9, 16, 25]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(squares)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[0] # return first item (zero-based indexing!)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[2]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[-1] # last item"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 9]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[1:3] # slicing returns a new list; last index is omitted!"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 9, 16, 25]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[1:] # all items starting from index 1"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# concatenation\n",
"squares + [36, 49, 64, 81, 100]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[121, 4, 9, 16, 25]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# change a single entry\n",
"squares[0] = 121\n",
"squares"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[['a', 'b', 'c'], [1, 2, 3]]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nested lists\n",
"a = ['a', 'b', 'c']\n",
"n = [1, 2, 3]\n",
"x = [a, n]\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[56.4, 'abc', [0, -1, 2]]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# mixing different types in a list is allowed\n",
"x = [56.4, 'abc', [0, -1, 2]]\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Functions"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Fibonacci series up to n\n",
"def fib(n):\n",
" a, b = 0, 1 # simultaneous assigment\n",
" while a < n:\n",
" print(a)\n",
" a, b = b, a+b"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"1\n",
"1\n",
"2\n",
"3\n",
"5\n",
"8\n",
"13\n",
"21\n",
"34\n",
"55\n",
"89\n",
"144\n",
"233\n",
"377\n",
"610\n",
"987\n"
]
}
],
"source": [
"fib(1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dictionaries"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"tel = {'Mike': 74098, 'Anna': 93465, 'Fred': 24139}"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"93465"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tel['Anna']"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['Mike', 'Anna', 'Fred'])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tel.keys()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Anna': 93465, 'Fred': 24139, 'Ive': 12317, 'Mike': 74098}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# add an entry\n",
"tel['Ive'] = 12317\n",
"tel"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'Mike' in tel"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Anna': 93465, 'Fred': 24139, 'Ive': 12317}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"del tel['Mike']\n",
"tel"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"'Mike' in tel"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Classes"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class Person(object):\n",
"\n",
" def __init__(self, first, last):\n",
" # define instance variables\n",
" self.firstname = first\n",
" self.surname = last\n",
" self.hobbies = [] # initially empty list of hobbies\n",
"\n",
" # first argument 'self' is similar to \"this\" pointer in C++\n",
" def add_hobby(self, hobby):\n",
" self.hobbies.append(hobby)\n",
"\n",
" @property\n",
" def fullname(self):\n",
" return self.firstname + ' ' + self.surname"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"# create actual person\n",
"sv = Person('Sebastian', 'Vettel')\n",
"sv.add_hobby('Motorsport')\n",
"sv.add_hobby('Football')"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Motorsport', 'Football']\n"
]
}
],
"source": [
"print(sv.hobbies)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The hobbies of Sebastian Vettel are ['Motorsport', 'Football']\n"
]
}
],
"source": [
"print('The hobbies of', sv.fullname, 'are', sv.hobbies)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## NumPy"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 2. , 3.5],\n",
" [4. , 5. , 6. ]])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define matrix\n",
"a = np.array([[1, 2, 3.5], [4, 5, 6]])\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2, 3)"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# dimensions\n",
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(a)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[2. , 3.5],\n",
" [5. , 6. ]])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# submatrix\n",
"a[:,1:3]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 2. ],\n",
" [3.5, 4. ],\n",
" [5. , 6. ]])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.reshape((3, 2))"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 0, 2],\n",
" [-1, 1, 0]])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define another matrix\n",
"b = np.array([[1, 0, 2], [-1, 1, 0]])\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1., 0., 7.],\n",
" [-4., 5., 0.]])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# pointwise product!\n",
"a*b"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 8., 1.],\n",
" [16., 1.]])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# matrix-matrix product with transposed 'b' matrix\n",
"np.dot(a, b.T)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# this cannot work due to dimension mismatch\n",
"#np.dot(a, b)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3.5, 9. ])"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# matrix-vector product\n",
"x = np.array([2, -1, 1])\n",
"np.dot(a, x)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.84147098, 0.90929743, -0.35078323],\n",
" [-0.7568025 , -0.95892427, -0.2794155 ]])"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# elementwise operation on matrix entries\n",
"np.sin(a)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. ])"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# generate array of 11 numbers between 1 and 3\n",
"np.linspace(1, 3, 11)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# without last point\n",
"np.linspace(1, 3, 10, endpoint=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plot a list of points\n",
"plt.plot([1, 2, 3, 4, 5], [1, 4, 8, 14, 13], 'o')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# same, but connected\n",
"plt.plot([1, 2, 3, 4, 5], [1, 4, 8, 14, 13])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# uniformly spaced grid points between 0 and 2pi\n",
"x = np.linspace(0, 2*np.pi, 101)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# evaluate sine function at 'x' data points\n",
"y = np.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEKCAYAAAA1qaOTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xd4lFX6//H3nU4qhIQaAgmE3gmgUlYQFMuKlRVXxYquYq+7uuuu5WvbtYENUcSKDYVVFKmCKEjoJZQQWgiQEAglJKSd3x8z7C9iQgozOVPu13XNlZmnzHzGkjvneU4RYwxKKaXU6QqwHUAppZRv0IKilFLKJbSgKKWUcgktKEoppVxCC4pSSimX0IKilFLKJbSgKKWUcgktKEoppVxCC4pSSimXCLIdoD7FxcWZNm3a2I6hlFJeZfny5fuNMfHVHedXBaVNmzakpaXZjqGUUl5FRHbU5Di95KWUUsoltKAopZRyCS0oSimlXEILilJKKZfQgqKUUsolrBYUEXlXRHJEZF0V+0VEXhWRDBFZIyK9K+wbIyJbnI8x9ZdaKaVUZWy3UN4DRpxi//lAivMxFngDQERigceB/kA/4HERaeTWpEoppU7J6jgUY8xCEWlzikNGAu8bxzrFS0SkoYg0B84GZhtjDgCIyGwchekT9yZWlSksLmPj3sNkHSzkUGEJh4tKKCszRDcIJrpBEE2iwujcPJpGESG2oyql3MjTBza2BHZVeJ3l3FbV9t8RkbE4WjckJia6J6WfKS4tZ0lmHrPW7+XXbQfYmnuUclP9eS1iwuiZ2JBzOzdjSMcmxDQIdn9YpVS98fSCIpVsM6fY/vuNxkwEJgKkpqbW4NeeqsqWfUd4d/E2vl2zh8NFpYSHBHJGcmPO79qMzi1iSI6PoGGDYKIbBBMgwpGiEg4XlbL7YCHrsw+xPvswS7flMXPtXoIDhYHt4rh+QBKDU+IQqexfqVLKm3h6QckCWlV4nQBkO7effdL2BfWWys8syczjjQVb+XFzLmHBAVzQrTkXdG3OwJQ4woIDqzyvcWQojSNDSYqLYGBKHADl5YbVWfl8v24vX63czZh3fyWlSSS3DErmst4tCQq0fVtPKVVX4rg9YTGA4x7KN8aYrpXsuxAYB1yA4wb8q8aYfs6b8suBE72+VgB9TtxTqUpqaqrRubxqbtv+Av5vZjqzN+wjPiqUMWe25ur+rYl10b2Q4tJyvlmTzduLtpG+5zAdmkbx2EWdGJRS7Rx0Sql6JCLLjTGp1R1ntYUiIp/gaGnEiUgWjp5bwQDGmDeBmTiKSQZwDLjBue+AiDwJLHO+1RPVFRNVc0UlZbw8Zwvv/JRJSGAAD57XgZsGJp2yNVIXIUEBXNY7gUt7tWTW+r08PTOda9/5lWGdmvDUJd1oFhPm0s9TSrmX9RZKfdIWSvXW7T7EfZ+tYvO+o1zZJ4EHR3SgSVT9/GI/XlrGe4u38/KcLQQHCk9e0pWRPSvta6GUqkc1baHoBWsFOO5tvLFgK5e+vpj8YyW8d0NfXriyR70VE4DQoEBu/UNbvrt7EO2aRHL31FWM+3gFR4pK6i2DUqruPP2mvKoHBcdLeeDz1Xy3bi8XdGvG05d0szpmpE1cBJ/deiZvLczkxdmb2bj3CG9fl0pSXIS1TEqp6mkLxc/tzDvG5W/8zKz1e3n0gk68dnVvjxiAGBQYwB1D2vHBjf3IO3qckRN+YsGmHNuxlFKnoAXFj63JyueS1xeTnV/Iezf045bByR43HuSsdnHMGDeQFg0bcON7y/jk1522IymlqqAFxU/9vHU/oycuoUFwIF/fMYDB7T23q26r2HCm3X4Wg9vH89dpa3ljwVbbkZRSldCC4od+WL+X6ycvo2WjBnz5l7NIjo+0Hala4SFBTLw2lYt7tOC57zfyzMx0/KmHolLeQG/K+5lZ6/dy+0cr6NYyhvdu6EvDcPv3S2oqJCiAl//Uk5gGwby1MJPScsNjF3byuMt0SvkrLSh+ZMGmHO78eCXdWsbw4c39iQz1vn/9AQHCEyO7EBggvPPTNhoEB/LAeR1sx1JKoQXFb/ycsZ9bP1hOStNIptzYzyuLyQkiwuN/7Mzx0jImzM8gLDiAcUNTbMdSyu95728VVWPrdh/i5vfTaN04nA9u6u8T08aLCE9d0o2iknL+/cNmYsJDuPaM1rZjKeXXtKD4uKyDx7jhvWU0Cg/hw5v6u2xiR08QGCC8cEV3DhWW8Pj0dbSICeOcTk1tx1LKb2kvLx92qLCEGyYvo6ikjMk39KVJtO9NthgUGMD40b3o0iKGcR+vZG3WIduRlPJbWlB8VElZOX/5cDnb8wp465o+tG8aZTuS20SEBvHO9anERoRw45Rl7M4vtB1JKb+kBcVHPf1tOj9vzeOZy7pzVrs423HcrklUGO/d0Jei4jJu/SCNopIy25GU8jtaUHzQ52m7eO/n7dw0MIkr+iTYjlNvUppG8fJVPVmffZi/TVurAx+VqmdWC4qIjBCRTSKSISKPVLL/JRFZ5XxsFpH8CvvKKuybUb/JPdearHwe/XodZ7VtzF/P72g7Tr07p1NT7h3WnmkrdzN58XbbcZTyK9Z6eYlIIPAaMBzHGvHLRGSGMWbDiWOMMfdWOP5OoFeFtyg0xvSsr7ze4EBBMbd9sJz4yFDGj+7lt+uzjxvSjnW7D/H0zHS6tIimf3Jj25GU8gs2f+P0AzKMMZnGmGJgKjDyFMePBj6pl2ReqLzc8MDnq9l/tJg3r+lD48hQ25GsCQgQ/jOqB61jw7lr6kryjh63HUkpv2CzoLQEdlV4neXc9jsi0hpIAuZV2BwmImkiskRELnFfTO/wzk/bmLcxh8cu6kS3hBjbcayLCgtm/NW9OHishPs/X015ud5PUcrdbBaUymb0q+r/+quAL4wxFbvuJDrXOL4aeFlE2lb6ISJjnYUnLTc39/QSe6iVOw/y3PcbGdGlmY4Wr6BLixj+fmEnFmzKZdJPmbbjKOXzbBaULKBVhdcJQHYVx17FSZe7jDHZzp+ZwAJ+e3+l4nETjTGpxpjU+HjPXfOjrg4XlXDnJytpGh3Gc1d015l3T3LNGa05v2sznv9+Eyt3HrQdRymfZrOgLANSRCRJREJwFI3f9dYSkQ5AI+CXCtsaiUio83kcMADYcPK5/uCf09ez51AR46/u5RNzdLmaiPDs5d1pGh3GvZ+u4lhxqe1ISvksawXFGFMKjANmAenAZ8aY9SLyhIhcXOHQ0cBU89tBBZ2ANBFZDcwHnq3YO8xffLd2D9NW7uaOIe3ondjIdhyPFdMgmH9f2YMdB47xfzPTbcdRymeJPw3+Sk1NNWlpabZjuETO4SLOe3khrWLD+fIvZxHsp12Ea+Ppbzfw9qJtTL6hL0M6NLEdRymvISLLnfesT0l/C3khYwwPf7mGY8VlvDiqpxaTGrr/3A50aBrFQ1+s4WBBse04Svkc/U3khT5Py2L+plz+en5H2jXx/PXgPUVYcCAv/qkH+ceKeXzGettxlPI5WlC8zL7DRTz57Qb6JcVy3ZltbMfxOl1axDBuSAozVmcze8M+23GU8ilaULyIMYZHv1pHSVk5z1/enYAA7SJcF385uy0dm0Xx6FdrOVRYYjuOUj5DC4oX+e+aPcxJ38f9wzvQJi7CdhyvFRIUwAtX9CCvoJj/+1Z7fSnlKlpQvMSBgmL+OWM9PVo15MaBSbbjeL1uCTHcMiiZT9N28dOW/bbjKOUTtKB4iae/TedwYQnPX96dQL3U5RL3DEshKS6CR79eqwtyKeUCWlC8wC9b8/hyRRZjByfToZnvLuVb38KCA3n6kq7syDvG6/MzbMdRyutpQfFwx0vLeOzrtbSKbcCdQ1Nsx/E5Z7WL49JeLXnjx61k5By1HUcpr6YFxcNN/DGTrbkFPDGyKw1CAm3H8Ul/u6ATDYIDefQrXTZYqdOhBcWD7cgrYPz8DC7s1lynCnGj+KhQHjm/E0u3HWDait224yjltbSgeLAn/ruB4ADhH3/sbDuKz7uqbyt6JTbkme/SOVykY1OUqgstKB5q3sZ9zN2Yw93DUmgaHWY7js8LCBCeuLgreQXFvDJni+04SnklLSgeqKikjH/9dwNt4yO4/iwdc1JfuiXEMLpfIu/9vJ3N+47YjqOU19GC4oHe+WkbO/KO8c+LuxASpP+K6tOD53YgKiyIx6ev1xv0StWS/rbyMNn5hUyYl8GILs0YlOJ7SxZ7ukYRIdx/bgd+yczj27V7bMdRyqtYLSgiMkJENolIhog8Usn+60UkV0RWOR83V9g3RkS2OB9j6je5+zz3/UbKjeHRCzvZjuK3ru6XSOfm0Twzc6OOoFeqFqwVFBEJBF4Dzgc6A6NFpLLuTJ8aY3o6H5Oc58YCjwP9gX7A4yLi9WvgLt9xkOmrshk7OJlWseG24/itwADh7xd1Znd+IZMWZdqOo5TXsNlC6QdkGGMyjTHFwFRgZA3PPQ+YbYw5YIw5CMwGRrgpZ70oLzc8+c0GmkSFctsf2tqO4/fObNuYEV2a8fqCrew7XGQ7jlJewWZBaQnsqvA6y7ntZJeLyBoR+UJEWtXyXK8xY3U2q3bl8+B5HYgIDbIdRwF/vaAjpWWGF2Ztsh1FKa9gs6BUNmXuyd1q/gu0McZ0B+YAU2pxruNAkbEikiYiabm5uXUO606FxWU89/1GuraM5vLeCbbjKKfWjSO4YUAbvlyRxdqsQ7bjKOXxbBaULKBVhdcJQHbFA4wxecaY486XbwN9anpuhfeYaIxJNcakxsd7Zq+ptxdlsudQEf+4qIuuwuhh7hjajtjwEJ76doN2I1aqGjYLyjIgRUSSRCQEuAqYUfEAEWle4eXFwInl9WYB54pII+fN+HOd27xO7pHjvPXjVs7r0pR+SbG246iTRIcFc8+wFJZuO8Dc9BzbcZTyaNYKijGmFBiHoxCkA58ZY9aLyBMicrHzsLtEZL2IrAbuAq53nnsAeBJHUVoGPOHc5nVembuZ46XlPDyio+0oqgpX9UskOS6CZ75Lp7Ss3HYcpTyW+FMzPjU11aSlpdmO8T8ZOUc57+WF/Ll/Ik+M7Go7jjqFWev3cusHy3n60q78uX9r23GUqlcistwYk1rdcTpS3qLnvt9Ig+BA7j5HF87ydOd2bkrfNo14afYWCo6X2o6jlEfSgmLJr9sOMHvDPv5ydlsaR4bajqOqISL87YJO7D96nIkLdbCjUpXRgmKBMYZnv0unaXQoNw7Q2YS9Ra/ERlzYrTlvL8pk/9Hj1Z+glJ/RgmLB7A37WLEzn3uGtddlfb3M/ee253hpORPmZdiOopTH0YJSz8rKHSOvk+MiuLKPDmL0NsnxkYxKbcVHS3ewM++Y7ThKeRQtKPVs2oostuQc5YHzOhAUqP/4vdE9w1IIDBBemrPZdhSlPIr+RqtHRSVlvDR7M90TYji/azPbcVQdNY0O44YBSXy9ajfpew7bjqOUx9CCUo8+XLKD7ENFPDyiIyI6xYo3u21wW6JCg3j++422oyjlMbSg1JOjx0t5fcFWBrRrzIB2cbbjqNMUEx7MX85ux/xNuSzf4ZWTNCjlclpQ6snkn7ZxoKCYB8/TKVZ8xZizWhMXGcoLszbpxJFKoQWlXuQfK2biokyGdWpKz1YNbcdRLhIeEsS4IW1ZknmAxRl5tuMoZZ0WlHrw1sJMjh4v5f5z29uOolxsdP9EWjZswAuzNmorRfk9LShulnOkiPcWb+eP3VvQqXm07TjKxUKDHHOxrc46xOwN+2zHUcoqLShu9vr8rRSXlXPvcG2d+KrLerckOS6C//ywmfJybaUo/6UFxY32HCrk4193cnnvliTFRdiOo9wkKDCAu4elsGnfEWau22M7jlLWaEFxo9fmZ1BebrhzqE5P7+su6t6C9k0jeXnOFsq0laL8lNWCIiIjRGSTiGSIyCOV7L9PRDaIyBoRmSsirSvsKxORVc7HjJPPtS3r4DE+XbaLUX1b0So23HYc5WaBAcI9w9qTkXOUGat3246jlBXWCoqIBAKvAecDnYHRItL5pMNWAqnGmO7AF8DzFfYVGmN6Oh8X42HGz81AEMYNaWc7iqonI7o0o1PzaF6Zs0WXClZ+yWYLpR+QYYzJNMYUA1OBkRUPMMbMN8acmNJ1CeAV0/Nu31/AFyuyuLp/Ii0aNrAdR9WTgADhvuHt2Z53jGkrtJWi/I/NgtIS2FXhdZZzW1VuAr6r8DpMRNJEZImIXFLVSSIy1nlcWm5u7uklrqHx8zIIChBuP7ttvXye8hzDOjWhR0IMr87bQom2UpSfsVlQKpsdsdK7mSJyDZAKvFBhc6IxJhW4GnhZRCr97W2MmWiMSTXGpMbHx59u5mpt21/AVyuzuOaM1jSJDnP75ynPIuK4l5J1sJAvl2fZjqNUvbJZULKAVhVeJwDZJx8kIsOAR4GLjTH/W3fVGJPt/JkJLAB6uTNsTY2ft4WQoABu/UOy7SjKkrM7xNOjVUPGz8uguFRbKcp/2Cwoy4AUEUkSkRDgKuA3vbVEpBfwFo5iklNheyMRCXU+jwMGABvqLXkVMnOP8vXK3VzTvzVNorR14q8crZQUducX8uUKbaUo/2GtoBhjSoFxwCwgHfjMGLNeRJ4QkRO9tl4AIoHPT+oe3AlIE5HVwHzgWWOM9YIyYV6Gs3Wi90783dnt4+nZqiETtJWi/EiQzQ83xswEZp607R8Vng+r4ryfgW7uTVc7mblH+XrVbm4elEx8VKjtOMqyE62U6ycv44vljh5/Svk6HSnvIhPmZRAaFMjYwXrvRDn8oX08vRIb8tp8baUo/6AFxQVOtE6uPdOx4JJS4Gil3H2O417KF9rjS/kBLSguMGG+497JLYO0daJ+6w/tHT2+tJWi/IEWlNO0fX8B01dlc03/1nrvRP2OiHCPs5UyTXt8KR+nBeU0TZjvGBU/VsedqCqc3SGe7gkxTJifoaPnlU/TgnIaduQV8NXK3fxZx52oUzhxLyXrYCFf6RxfyodpQTkNrzlbJ7dp60RVY2jHJnRr6Wil6EzEylfVqKCISICI9BKRC0VkqIg0dXcwT7frgGNG2dH9EnXOLlWtE62UnQeOMX3V72YYUsonnHJgo3PCxYeBYcAWIBcIA9qLyDEc06JMMcb43Z9cry/YSoAIt+moeFVD53RqQufm0UyYn8HIni0ICtQLBMq3VPdf9FPAh0BbY8x5xphrjDFXOBe8uhiIAa51d0hP4xhXsIs/9W1FsxhtnaiaERHuOieFbfsL+GaNrj2vfM8pWyjGmNGn2JcDvOzyRF7gzQVbAbhN1ztRtXRu56Z0bBbF+Hlb+GOPFgQGVLaKg1Leqab3UJ4UkaAKr6NFZLL7YnmuvYeK+HTZLq7o04qWuhqjqqWAAOHOoSlszS1g5lptpSjfUtOLuEHAUhHpLiLn4ph6frn7YnmuN3/cSrkxuhqjqrPzuzYjpUkk4+dtoby80jXllPJKNSooxpi/4rg5vxR4D7jQGDPBjbk8Us7hIj75dSeX9mpJq9hw23GUlwoIEMYNbcfmfUeZtX6v7ThKuUxNL3kNBl4BnsCxOuIEEWnhxlweaeLCTErKyrljSDvbUZSXu6h7C5LjInh1XgbGaCtF+YaaXvL6N3ClMeYZY8zVwERg3ul+uIiMEJFNIpIhIo9Usj9URD517l8qIm0q7Purc/smETnvdLNUZ//R43y0dCeX9GxJm7gId3+c8nGBAcIdQ9qRvucwc9Jzqj9BKS9Q04JyZsUVEY0x03Asu1tnIhIIvAacD3QGRotI55MOuwk4aIxpB7wEPOc8tzOOJYO7ACOA153v5zaTFm2jqLSM27V1olxkZM8WJMaGM37eFm2lKJ9wyoIiIteISIAxpuzkfcaYPBFpKyID6/jZ/YAMY0ymMaYYmAqMPOmYkcAU5/MvgHNERJzbpxpjjhtjtgEZzvdzi4MFxXzwy3Yu6t6Cdk0i3fUxys8EBQZwx5C2rMk6xILNubbjKHXaqmuhNAZWisi7InKHiIwSkeuc677/CDwP7KvjZ7cEdlV4neXcVukxzjXoDzkz1eRcl3l38TYKisu4c6i2TpRrXdorgZYNG/DqXG2lKPfIyDnKDZN/ZWfeMbd/1ikLijHmFaA38AkQD5zjfL0buNYYc7kxZksdP7uyEV0n/x9V1TE1OdfxBiJjRSRNRNJyc+v2V+CBgmIu7N6c9k2j6nS+UlUJCQrgL2e3ZeXOfBZn5NmOo3zQa/MzWJJ5gIhQt94VAKoZKQ/gvNw12/lwpSygVYXXCcDJs+adOCbLObAyBjhQw3MBMMZMxNGJgNTU1Dr9Cfj0pd0o0/ECyk2uTE1gwrwMXp23hYEpcbbjKB+ybX8B01ft5uZByTSuh+XJa9ptOF5E/iYiE52Xv94VkXdP87OXASkikiQiIThuss846ZgZwBjn8yuAecZxXWAGcJWzF1gSkAL8epp5TkmnyFDuEhoUyG1/SObXbQdYkqmtFOU6r8/PIDgwgJsHJdXL59W0l9d0HK2DOcC3FR515rwnMg6YBaQDnxlj1jvvz1zsPOwdoLGIZAD3AY84z10PfAZsAL4H7qis44BS3uKqfonERYYyfl5dryAr9Vu7Dhxj2srdXN0/sd4WAKz2kpdTuDHmYVd/uDFmJjDzpG3/qPC8CLiyinOfBp52dSalbAgLdrRSnvo2neU7DtCndaztSMrLvb5gK4Ei3Dq4/qaJqmkL5RsRucCtSZTyc1f3TyQ2IoRX5mbYjqK8XLalJTZqWlDuxlFUCkXksIgcEZHD7gymlL8JDwnilkHJLNycy6pd+bbjKC/25o92ltio6eSQUcaYAGNMA2NMtPN1tLvDKeVvrj2zNQ3Dgxk/V++lqLrZe6iIqb/aWWKjupHyHZ0/e1f2qJ+ISvmPyNAgbh6YxNyNOazbfch2HOWF3lpob4mN6loo9zl//qfC498VHkopF7vurDZEhwXxqrZSVC3lHCni46U7uay3nSU2qhspP9b59A1gpDFmCDAfxxQoD7g5m1J+KTosmBsHJvHDhn1syNZblarm3l6YSWm5sbbERk1vyj9mjDnsnAhyOI5Ftt5wWyql/NwNZyURFRrEhPnaSlE1s//ocT5cspORPVvQurGdJTZqWlBODBq8EHjTGDMdCHFPJKVUTHgw1w9ow8y1e9m094jtOMoLvL0ok+OlZVYXAKxpQdktIm8Bo4CZIhJai3OVUnVw08AkIkODeFVHz6tqHCgo5oNfdvDHHi1oG29viY2aFoVROKZIGWGMyQdigQfdlkopRcPwEMac1ZqZa/ewZZ+2UlTV3l6USWGJ/SU2ajoO5ZgxZtqJqeqNMXuMMT+4N5pS6uaByYQHB/LqPB09ryp3oKCY938+sQCg3SU29LKVUh6sUUQI153Vhm/WZGsrRVVq0qJMjpWUcZcHLACoBUUpD3fLoGQaBAcyXlsp6iQHC4qZ8vN2LuzWnBQPWABQC4pSHi42IoRrz2zNf9dkk5Fz1HYc5UHe+Wmbo3VyTortKIAWFKW8wlhnK0VHz6sTDhYUM3nxNi7o5jnLk2tBUcoLNI4M5boz2zhbKXovRcGknxz3Tu72kNYJWCooIhIrIrNFZIvzZ6NKjukpIr+IyHoRWSMif6qw7z0R2SYiq5yPnvX7DZSqf2MHO1opul6KOlBQzHuLHfdOPKV1AvZaKI8Ac40xKcBc5+uTHQOuM8Z0AUYAL4tIwwr7HzTG9HQ+Vrk/slJ2xUaEMMbZ42uz9vjya28v8rzWCdgrKCOBKc7nU4BLTj7AGLO5wriXbCAHiK+3hEp5oFsGOcel6L0Uv3XA2bProu4tPKJnV0W2CkpTY8wecAySBJqc6mAR6Ydj7rCtFTY/7bwU9pJzKhilfN6JVsq3a/foHF9+auJCx6h4Txh3cjK3FRQRmSMi6yp5jKzl+zQHPgBuMMaUOzf/FegI9MUxDczDpzh/rIikiUhabm5uHb+NUp7jlkHJRIQE8fKczbajqHqWe+Q4U37ezh89sHUCbiwoxphhxpiulTymA/ucheJEwcip7D1EJBr4Fsf0+UsqvPce43AcmAz0O0WOicaYVGNMany8XjFT3q9RRAg3DmjDd+v2sj5bV3X0J2/9uJXjpWXcPcyz7p2cYOuS1wxgjPP5GGD6yQeISAjwFfC+Mebzk/adKEaC4/7LOremVcrD3DQomeiwIF6arfdS/MW+w0V8sGQHl/ZKsDqj8KnYKijPAsNFZAuOBbueBRCRVBGZ5DxmFDAYuL6S7sEfichaYC0QBzxVv/GVsiumQTC3DEpmTvo+Vu/Ktx1H1YPX52dQVm48rmdXRWKMsZ2h3qSmppq0tDTbMZRyiaPHSxn43Dx6tmrIezdUedVX+YDs/ELOfmEBl/dpyTOXda/3zxeR5caY1OqO05HySnmpyNAgbh3clgWbclm+44DtOMqNxs/LwGBvrfia0oKilBcbc1Zr4iJDeWHWJvzpaoM/2ZFXwOdpu7i6XyIJjcJtxzklLShKebHwkCDGDWnLkswDLM7Isx1HucHLc7YQFCjc4YHjTk6mBUUpLze6fyItGzbghR+0leJrNu09wterdjPmrDY0iQqzHadaWlCU8nKhQYHcfU4Kq3flM3vDPttxlAu9OHsTkSFB3Da4re0oNaIFRSkfcFnvliTHRfDi7M2Ul2srxRes3pXPrPX7uHlQMo0iQmzHqREtKEr5gKDAAO4d3p6Ne48wY3W27TjKBV6YtYlG4cHcOLCN7Sg1pgVFKR9xYbfmdGkRzX9mb6K4tLz6E5TH+mnLfn7K2M8dQ9oRFRZsO06NaUFRykcEBAgPjejIrgOFfLx0h+04qo6MMTw/ayMtGzbgmjNa245TK1pQlPIhg1PiOCM5lvHzMjh6vNR2HFUHM9fuZU3WIe4ZlkJYcKDtOLWiBUUpHyIiPDyiI3kFxbyzaJvtOKqWSsrK+fcPm2jfNJLLeifYjlNrWlCU8jG9EhsxokszJi7cSt7R47bjqFr4PC2LbfsLePC8jgQGiO04taYFRSkf9MB5HSgqLdelgr1IwfFSXpqzmT6tGzGs0ykXsfVYWlCU8kHtmkTyp76t+GjpTjJzj9qOo2rg7UWZ5B45zt+7js+yAAASOElEQVQu6IhjqSfvowVFKR91z7AUQoICeP77TbajqGrkHCli4sJMzu/ajD6tY23HqTMtKEr5qCZRYdw6uC3fr9+r09t7uJfnbKG4tJyHRnS0HeW0WCkoIhIrIrNFZIvzZ6MqjiursFrjjArbk0RkqfP8T53LBSulTnLzoCTio0J5+tt0nTjSQ2XkHOHTZbu45ozWJMVF2I5zWmy1UB4B5hpjUoC5zteVKTTG9HQ+Lq6w/TngJef5B4Gb3BtXKe8UERrEfcPbs2JnPt+t22s7jqrEMzM3Eh4cyF0evLRvTdkqKCOBKc7nU4BLanqiOO5WDQW+qMv5SvmbK/sk0KFpFM98l05RSZntOKqCRVtymbsxh9uHtCPWSyaAPBVbBaWpMWYPgPNnVX3kwkQkTUSWiMiJotEYyDfGnBgGnAW0rOqDRGSs8z3ScnNzXZVfKa8RFBjAYxd1YteBQiYv3m47jnIqLSvnqW/SSYwN96oJIE8lyF1vLCJzgGaV7Hq0Fm+TaIzJFpFkYJ6IrAUOV3JclReHjTETgYkAqampehFZ+aVBKfEM69SE1+ZncEWfBOKjQm1H8ntTl+1i074jvHlNb0KDvGuKlaq4rYVijBlmjOlayWM6sE9EmgM4f+ZU8R7Zzp+ZwAKgF7AfaCgiJ4phAqDzdStVjb9d0ImikjJenK3diG07XFTCi7M30z8plvO6VPZ3t3eydclrBjDG+XwMMP3kA0SkkYiEOp/HAQOADcbRVWU+cMWpzldK/VZyfCRjzmrD1GW7WJ99yHYcvzZhXgYHjxXz94s6e+0gxsrYKijPAsNFZAsw3PkaEUkVkUnOYzoBaSKyGkcBedYYs8G572HgPhHJwHFP5Z16Ta+Ul7praAqNwkP414wN2o3Ykoyco7z70zau7JNA15YxtuO4lNvuoZyKMSYPOKeS7WnAzc7nPwPdqjg/E+jnzoxK+aKY8GAeOq8Dj0xby4zV2YzsWWV/FuUGxhj+9d/1NAgJ9PpBjJXRkfJK+ZlRqa3okRDD09+m65op9WzW+n0s2rKf+4e3Jy7S9zpGaEFRys8EBAj/vLgLOUeOM15nI643hcVlPPnNBjo2i/K6lRhrSguKUn6oV2IjRqUm8O7ibWTk6GzE9eGNBRnszi/knxd3ISjQN3/1+ua3UkpV66ERHWkQHMjfv16nN+jdLDP3KG/+mMnFPVpwRnJj23HcRguKUn4qLjKUh8/vyC+ZeXy1crftOD7LGMNjX68jNNgxY4Ev04KilB8b3TeR3okNefrbdPKPFduO45O+XrWbn7fm8dCIjjSJCrMdx620oCjlxwIChKcv7UZ+YQnPfrfRdhyfk3+smKe+Sadnq4b8uV+i7ThupwVFKT/XqXk0Nw9MYuqyXSzbrgtxudJz328kv7CE/7u0GwEBvjMivipaUJRS3D0shYRGDXj4yzU6xb2L/LI1j09+3cVNA5Po3CLadpx6oQVFKUV4SBDPXNaNzNwCXtGxKaetsLiMR6atoU3jcO4d1t52nHqjBUUpBTimuB+VmsDEhZms262TR56O//ywiR15x3j28u40CPGNqelrQguKUup/Hr2wM40jQnjg89UUl5bbjuOVVuw8yDuLt3HNGYk+PeakMlpQlFL/E9MgmKcu6crGvUd4bX6G7Thep6ikjIe+WEPz6DAe9sHJH6ujBUUp9RvndmnGJT1bMGF+Bqt35duO41We/34TGTlHee6K7kSFBduOU++0oCilfudfI7vSJCqUez9dRWGx9vqqicUZ+3l38TbGnNmaQSnxtuNYoQVFKfU7MQ2C+feVPcjcX8Cz36XbjuPxDhWW8MDnq0mOj+CR8317epVTsVJQRCRWRGaLyBbnz0aVHDNERFZVeBSJyCXOfe+JyLYK+3rW/7dQyrcNaBfHjQOSmPLLDn7cnGs7jkd7fPo6co4c56VRPf2qV9fJbLVQHgHmGmNSgLnO179hjJlvjOlpjOkJDAWOAT9UOOTBE/uNMavqJbVSfuahER1o3zSS+z9bRc6RIttxPNIXy7P4elU2dw1NoUerhrbjWGWroIwEpjifTwEuqeb4K4DvjDHH3JpKKfUbYcGBTLi6N0ePl3Lvp6soK9dp7ivKyDnC379exxnJsYwb2s52HOtsFZSmxpg9AM6fTao5/irgk5O2PS0ia0TkJRGpci1NERkrImkikpabq812pWqrfdMo/nVxFxZn5PHGAu1KfEJRSRnjPl5JeEggr1zVi0A/mKurOm4rKCIyR0TWVfIYWcv3aQ50A2ZV2PxXoCPQF4gFHq7qfGPMRGNMqjEmNT7eP3teKHW6RqW2YmTPFrw4ezNLM/Nsx/EIT3yzgY17j/CfUT1oGu3b09LXlNsKijFmmDGmayWP6cA+Z6E4UTByTvFWo4CvjDElFd57j3E4DkwG+rnreyilQMQxzX2bxhHc8fFK9h7y7/spn6Xt4uOlO7ntD205u0N1F1j8h61LXjOAMc7nY4Dppzh2NCdd7qpQjATH/Zd1bsiolKogMjSIt67tQ2FxKbd9uJzjpf45PmXVrnwe+2odA9vF8cC5/jPxY03YKijPAsNFZAsw3PkaEUkVkUknDhKRNkAr4MeTzv9IRNYCa4E44Kl6yKyU30tpGsV/RvVg1a58/vH1er9biz7nSBG3fbCcJtGhjB/di6BAHcpXUZCNDzXG5AHnVLI9Dbi5wuvtQMtKjhvqznxKqaqN6NqccUPaMWF+Bl1aRnPdmW1sR6oXx0vLuOOjFeQXFjPtLwNoFBFiO5LH0fKqlKq1e4e355yOTfjnjPXM27jPdhy3Ky83PPTFGpZtP8gLV/TwmwWzaksLilKq1gIDhFdH96Jzi2jGfbyStVm+vX7Kf2ZvYvqqbB48rwN/7NHCdhyPpQVFKVUnEaFBvDumL43CQ7hxyjKyDvrmuONPft3Ja/O3MrpfK24/u63tOB5NC4pSqs6aRIcx+Ya+FJWUcd07v5J75LjtSC713do9PPb1Ov7QPp4nR3bF0bFUVUULilLqtLRvGsXk6/uy51AR10xayoGCYtuRXGLexn3cNXUlPRJieP3PvbVHVw3oPyGl1GlLbRPLpDGpbMsr4Lp3l3KosKT6kzzYT1v2c9uHK+jYLJr3buxHRKiVDrFeRwuKUsolBrSL461r+7Bp7xGufcd7Wyo/bs7l5veXkRwXwfs39iPaD1derCstKEoplxnSoQlvXuMoKqPe+oU9hwptR6qV/67O5uYpy0iOi+TDm/vrWJNa0oKilHKpczo1ZcqN/dh3qIgr3viFzNyjtiPVyIdLdnDX1JX0atWIqbeeQVxklZOYqypoQVFKudwZyY35ZOwZFJWUcdkbP/PTlv22I1WptKycJ7/ZwGNfr2Nohya8f5Ne5qorLShKKbfo2jKGabefRZOoUK57dymTFmV63Nxf+ceKuX7yMt75aRtjzmzNm9f2ISzYf5fwPV1aUJRSbtO6cQTTbh/A8M5NeerbdO75dBWHizyjB9iqXflcPGExv247wPOXd+dfI7sSrF2DT4v+01NKuVVkaBBv/LkP9w9vzzdr9jDipYX8nGHvElhJWTkvzt7M5W/8TGlZOZ+MPYNRfVtZy+NLtKAopdwuIEC485wUvrjtTMKCA7l60lIen76OQ8fqt7Wyelc+l73+M6/O3cLIni347p7B9GndqF4z+DLxtGua7pSammrS0tJsx1DKrxUWl/Hsd+m8v2QHMQ2CuW94e67ul+jWkeh7DxXx/KyNTFuxm7jIEJ4c2ZXzuzV32+f5GhFZboxJrfY4GwVFRK4E/gl0Avo510Gp7LgRwCtAIDDJGHNiIa4kYCqO9eRXANcaY6odRaUFRSnPsSH7ME9+s4FfMvNIiovgpoFJXN47gQYhrrspviOvgMmLt/Ppsl2UlRtuGpTE7We3JUp7cdWKpxeUTkA58BbwQGUFRUQCgc04VnTMApYBo40xG0TkM2CaMWaqiLwJrDbGvFHd52pBUcqzGGOYvWEfE+ZnsCbrEA3Dg/lT31Zc2K053VrG1GkyxmPFpSzcnMu0FbuZnb6PoADhjz1acM857UlsHO6Gb+H7alpQbK3YmA5U9x9LPyDDGJPpPHYqMFJE0oGhwNXO46bgaO1UW1CUUp5FRDi3SzOGd27Ksu0HmbQok0mLtvHWj5m0iAljaKcmdGsZQ5cWMaQ0jSQ06LetF2MMB4+VsCH7MOuzD5G24yCLtuRSVFJObEQId5zdjuvObE2T6DBL39C/ePKMZy2BXRVeZwH9gcZAvjGmtML23y0TrJTyHiJCv6RY+iXFcrCgmLkbc/h+3V6+WrGbD5fs/N9x4SGBRIcFExocwNGiUg4XlVBS9v+vsiQ0asCfUltxXtdm9GsTqzME1zO3FRQRmQM0q2TXo8aY6TV5i0q2mVNsryrHWGAsQGJiYg0+VillU6OIEK7ok8AVfRIoLzfsOHCM9dmH2JZbwKHCEg4XlVBUUk5UWBDRDYJpHBFCx2bRdG4RTazOvWWV2wqKMWbYab5FFlCxc3gCkA3sBxqKSJCzlXJie1U5JgITwXEP5TQzKaXqUUCAkBQXQVJchO0oqgY8uT24DEgRkSQRCQGuAmYYRy+C+cAVzuPGADVp8SillHIjKwVFRC4VkSzgTOBbEZnl3N5CRGYCOFsf44BZQDrwmTFmvfMtHgbuE5EMHPdU3qnv76CUUuq3dGCjUkqpU6ppt2FPvuSllFLKi2hBUUop5RJaUJRSSrmEFhSllFIuoQVFKaWUS/hVLy8RyQV21PH0OByDKr2Vt+cH7/8O3p4fvP87eHt+sPMdWhtj4qs7yK8KyukQkbSadJvzVN6eH7z/O3h7fvD+7+Dt+cGzv4Ne8lJKKeUSWlCUUkq5hBaUmptoO8Bp8vb84P3fwdvzg/d/B2/PDx78HfQeilJKKZfQFopSSimX0IJSAyIyQkQ2iUiGiDxiO09tiMi7IpIjIutsZ6kLEWklIvNFJF1E1ovI3bYz1ZaIhInIryKy2vkd/mU7U12ISKCIrBSRb2xnqQsR2S4ia0VklYh43SyxItJQRL4QkY3O/x/OtJ3pZHrJqxoiEghsBobjWPRrGTDaGLPBarAaEpHBwFHgfWNMV9t5aktEmgPNjTErRCQKWA5c4i3//AFERIAIY8xREQkGfgLuNsYssRytVkTkPiAViDbGXGQ7T22JyHYg1RjjleNQRGQKsMgYM8m5RlS4MSbfdq6KtIVSvX5AhjEm0xhTDEwFRlrOVGPGmIXAAds56soYs8cYs8L5/AiOtXFa2k1VO8bhqPNlsPPhVX/JiUgCcCEwyXYWfyQi0cBgnGs/GWOKPa2YgBaUmmgJ7KrwOgsv+4XmK0SkDdALWGo3Se05LxetAnKA2cYYb/sOLwMPAeW2g5wGA/wgIstFZKztMLWUDOQCk52XHSeJiMeti6wFpXpSyTav+uvSF4hIJPAlcI8x5rDtPLVljCkzxvQEEoB+IuI1lx9F5CIgxxiz3HaW0zTAGNMbOB+4w3k52FsEAb2BN4wxvYACwOPu52pBqV4W0KrC6wQg21IWv+S87/Al8JExZprtPKfDeZliATDCcpTaGABc7LwHMRUYKiIf2o1Ue8aYbOfPHOArHJezvUUWkFWhZfsFjgLjUbSgVG8ZkCIiSc4bYVcBMyxn8hvOG9rvAOnGmBdt56kLEYkXkYbO5w2AYcBGu6lqzhjzV2NMgjGmDY7//ucZY66xHKtWRCTC2akD56WicwGv6flojNkL7BKRDs5N5wAe1zElyHYAT2eMKRWRccAsIBB41xiz3nKsGhORT4CzgTgRyQIeN8a8YzdVrQwArgXWOu9BAPzNGDPTYqbaag5McfYYDAA+M8Z4ZddbL9YU+Mrx9wlBwMfGmO/tRqq1O4GPnH/YZgI3WM7zO9ptWCmllEvoJS+llFIuoQVFKaWUS2hBUUop5RJaUJRSSrmEFhSllFIuoQVFKaWUS2hBUUop5RJaUJSySET6isga55opEc71Urxmni+lKtKBjUpZJiJPAWFAAxzzNT1jOZJSdaIFRSnLnFNpLAOKgLOMMWWWIylVJ3rJSyn7YoFIIApHS0Upr6QtFKUsE5EZOKaFT8Kx3PE4y5GUqhOdbVgpi0TkOqDUGPOxczbin0VkqDFmnu1sStWWtlCUUkq5hN5DUUop5RJaUJRSSrmEFhSllFIuoQVFKaWUS2hBUUop5RJaUJRSSrmEFhSllFIuoQVFKaWUS/w/5IfPiolkrvUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# visualize sine function\n",
"plt.plot(x, y)\n",
"plt.xlabel('x')\n",
"plt.ylabel('sin(x)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plot multiple functions at once\n",
"plt.plot(x, y, x, np.cos(x))\n",
"plt.xlabel('x')\n",
"plt.ylabel('f(x)')\n",
"plt.legend(['sin(x)', 'cos(x)'], loc='lower left')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SciPy"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.interpolate import interp1d"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = np.linspace(0, 10, num=11)\n",
"y = np.cos(-x**2 / 9)\n",
"f = interp1d(x, y)\n",
"f2 = interp1d(x, y, kind='cubic')"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xnew = np.linspace(0, 10, 41)\n",
"plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')\n",
"plt.legend(['data', 'linear', 'cubic'], loc='best')\n",
"plt.show()"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment