Skip to content

Instantly share code, notes, and snippets.

@xamgore
Created November 13, 2017 12:33
Show Gist options
  • Save xamgore/762987277496f5e2405c68a2f64c8d98 to your computer and use it in GitHub Desktop.
Save xamgore/762987277496f5e2405c68a2f64c8d98 to your computer and use it in GitHub Desktop.
numpy, pandas, matplotlib
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Python. Семинар 5 (или 6)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Краткое введение в Pandas"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Эта директива используется для отображения графиков прямо в Jupyter. Рекомендуем всегда не задумываясь вставлять ее в свои ноутбуки."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Считывание данных: чистый Python"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Попробуем что-нибудь поделать средствами чистого Python без дополнительных библиотек. Посмотрим на содержание файла с демонстрационными данными для многоклассовой классификации."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Feature1,Weight,Height,Bla-bla,Size,Class\n",
"10.0,12,344,0,23.0,Class1\n",
"7.2,12,208,0,18.0,Class2\n",
"19.0,11,344,1,21.0,Class4\n",
"7.2,13,208,0,20.0,Class2\n",
"9.2,20,208,0,17.0,Class1\n",
"19.0,11,254,2,11.0,Class3\n",
"\n"
]
}
],
"source": [
"with open('data.csv') as data_file:\n",
" print(data_file.read())"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Можно увидеть, что первая строчка является заголовком, а каждая следующая строчка — описанием объекта. Последний столбец является меткой класса. В машинном обучении его еще называют целевой меткой, потому что его в дальнейшем нужно будет предсказывать. Все остальные столбцы называются признаковым описанием объектов или просто признаками."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Считывание данных: чистый Python"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[{'features': [10.0, 12.0, 344.0, 0.0, 23.0], 'label': 'Class1'},\n",
" {'features': [7.2, 12.0, 208.0, 0.0, 18.0], 'label': 'Class2'},\n",
" {'features': [19.0, 11.0, 344.0, 1.0, 21.0], 'label': 'Class4'},\n",
" {'features': [7.2, 13.0, 208.0, 0.0, 20.0], 'label': 'Class2'},\n",
" {'features': [9.2, 20.0, 208.0, 0.0, 17.0], 'label': 'Class1'},\n",
" {'features': [19.0, 11.0, 254.0, 2.0, 11.0], 'label': 'Class3'}]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"points = []\n",
"with open('data.csv', 'r') as data_file:\n",
" next(data_file) # skip first line\n",
" for line in data_file:\n",
" columns = line.strip().split(',')\n",
" features = [float(feature) for feature in columns[:5]]\n",
" label = columns[5]\n",
" points.append({'features': features, 'label': label})\n",
" \n",
"points"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Работа с данными: чистый Python"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Теперь можно выполнить простейшую аналитику по набору данных. Давайте посчитаем количество объектов каждого класса."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"defaultdict(int, {'Class1': 2, 'Class2': 2, 'Class3': 1, 'Class4': 1})"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from collections import defaultdict\n",
"\n",
"counter = defaultdict(int)\n",
"for point in points:\n",
" counter[point['label']] += 1\n",
" \n",
"counter"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Считывание данных: Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Подключаем библиотеку pandas, предназначенную для считывания, предобработки, быстрой визуализации и простой аналитики по набору данных."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Считаем данные в специализированный объект класса pandas.DataFrame, который представляет из себя таблицу с проименованными строками и столбцами."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Feature1 Weight Height Bla-bla Size Class\n",
"0 10.0 12 344 0 23.0 Class1\n",
"1 7.2 12 208 0 18.0 Class2\n",
"2 19.0 11 344 1 21.0 Class4\n",
"3 7.2 13 208 0 20.0 Class2\n",
"4 9.2 20 208 0 17.0 Class1\n",
"5 19.0 11 254 2 11.0 Class3\n"
]
}
],
"source": [
"df = pd.read_csv('data.csv')\n",
"print(df)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Pandas: индексация"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Срезы в DataFrame берутся по строкам:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Height Bla-bla Size\n",
"0 344 0 23.0\n",
"1 208 0 18.0\n",
"2 344 1 21.0\n",
"3 208 0 20.0\n",
"4 208 0 17.0\n",
"5 254 2 11.0\n"
]
}
],
"source": [
"print(df.iloc[:, 2:5])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Зато обращение по одному индексу означает столбец. Можно передать список названий столбцов:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Weight Height Size\n",
"0 12 344 23.0\n",
"1 12 208 18.0\n",
"2 11 344 21.0\n",
"3 13 208 20.0\n",
"4 20 208 17.0\n",
"5 11 254 11.0\n"
]
}
],
"source": [
"print(df[['Weight', 'Height', 'Size']])"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Работа с данными: pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Возьмем столбец с меткой класса и посчитаем количество элементов каждого значения в нем с помощью стандартной функции."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Class2 2\n",
"Class1 2\n",
"Class3 1\n",
"Class4 1\n",
"Name: Class, dtype: int64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Class'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Кроме того, это можно быстро визуализировать."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f3f8d41da90>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f8d41d240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df['Class'].value_counts().plot(kind='barh', color=\"blue\", alpha=.5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Работа с данными: Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"DataFrame поддерживает возможность работы в стиле БД. Например, есть операции groupby и join.\n",
"\n",
"О разных видах join, а также об операциях merge и concatenate можно прочесть тут: http://pandas.pydata.org/pandas-docs/stable/merging.html"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Сгруппируем наши данные по полю Bla-bla и посчитаем максимальный Size в каждой группе:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Bla-bla\n",
"0 23.0\n",
"1 21.0\n",
"2 11.0\n",
"Name: Size, dtype: float64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('Bla-bla')['Size'].max()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Работа с данными: Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Простой join двух табличек по индексам индексам:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Feature1 Weight Height Bla-bla Size Class Feature1_2 Weight_2 \\\n",
"0 10.0 12 344 0 23.0 Class1 10.0 12 \n",
"1 7.2 12 208 0 18.0 Class2 7.2 12 \n",
"2 19.0 11 344 1 21.0 Class4 19.0 11 \n",
"3 7.2 13 208 0 20.0 Class2 7.2 13 \n",
"4 9.2 20 208 0 17.0 Class1 9.2 20 \n",
"5 19.0 11 254 2 11.0 Class3 19.0 11 \n",
"\n",
" Height_2 Bla-bla_2 Size_2 Class_2 \n",
"0 344 0 23.0 Class1 \n",
"1 208 0 18.0 Class2 \n",
"2 344 1 21.0 Class4 \n",
"3 208 0 20.0 Class2 \n",
"4 208 0 17.0 Class1 \n",
"5 254 2 11.0 Class3 \n"
]
}
],
"source": [
"df_2 = d \n",
"df_2.columns = ['{}_2'.format(name) for name in df.columns]\n",
"print(df.join(df_2))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Join можно делать самыми разными способами, например, можно делать inner или outer join:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Feature1 Weight Height Bla-bla Size Class Feature1_2 Weight_2 \\\n",
"2 19.0 11 344 1 21.0 Class4 19.0 11 \n",
"3 7.2 13 208 0 20.0 Class2 7.2 13 \n",
"\n",
" Height_2 Bla-bla_2 Size_2 Class_2 \n",
"2 344 1 21.0 Class4 \n",
"3 208 0 20.0 Class2 \n"
]
}
],
"source": [
"print(df[0: 4].join(df_2[2:], how='inner'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Краткое введение в Numpy"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"С помощью Pandas можно удобно считывать, предобрабрабатывать и визуализировать данные, но основной инструмент, который понадобится в будущем — это Numpy."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Основные типы данных в numpy — это [numpy.array](http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.array.html) и [numpy.matrix](http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.matrix.html)."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[10.0, 12, 344, 0, 23.0, 'Class1'],\n",
" [7.2, 12, 208, 0, 18.0, 'Class2'],\n",
" [19.0, 11, 344, 1, 21.0, 'Class4'],\n",
" [7.2, 13, 208, 0, 20.0, 'Class2'],\n",
" [9.2, 20, 208, 0, 17.0, 'Class1'],\n",
" [19.0, 11, 254, 2, 11.0, 'Class3']], dtype=object)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = df.values\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Если сразу же хочется работать с вещественными числами, то можно позвать df.values.astype(np.float32), предварительно удалив/преобразовав данные, которые не приводятся к типу float32 (в данном случае):"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 10. , 12. , 344. , 0. , 23. ],\n",
" [ 7.19999981, 12. , 208. , 0. , 18. ],\n",
" [ 19. , 11. , 344. , 1. , 21. ],\n",
" [ 7.19999981, 13. , 208. , 0. , 20. ],\n",
" [ 9.19999981, 20. , 208. , 0. , 17. ],\n",
" [ 19. , 11. , 254. , 2. , 11. ]], dtype=float32)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = df.drop('Class', axis=1).values.astype(np.float32)\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Чтобы просто создать np.array, необходимо первым параметром передать последовательность. При создании можно явно указать тип хранимых значений (параметр dtype)."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(array([1, 2, 3, 4, 5, 6]), array([ 1., 2., 3., 4., 5., 6.]))"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"a = np.array([1,2,3,4,5,6]) \n",
"b = np.array([1,2,3,4,5,6], dtype=np.float64)\n",
"a, b"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Некоторые полезные функции для работы с массивами:"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* arange — аналог range из питона, которому можно передать нецелочисленный шаг"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ,\n",
" 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(0, 10, 0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* linspace — способ равномерно разбить отрезок на n-1 интервал"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.83333333, 1.66666667, 2.5 ,\n",
" 3.33333333, 4.16666667, 5. , 5.83333333,\n",
" 6.66666667, 7.5 , 8.33333333, 9.16666667, 10. ])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linspace(0, 10, 13)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* logspace — способ разбить отрезок по логарифмической шкале"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.logspace(0, 9, 10, base=2)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": []
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"a = np.arange(0, 10, 0.5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[[ 0. , 0.5],\n",
" [ 1. , 1.5],\n",
" [ 2. , 2.5],\n",
" [ 3. , 3.5],\n",
" [ 4. , 4.5]],\n",
"\n",
" [[ 5. , 5.5],\n",
" [ 6. , 6.5],\n",
" [ 7. , 7.5],\n",
" [ 8. , 8.5],\n",
" [ 9. , 9.5]]])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = np.reshape(a, (2, 5, 2))\n",
"c.shape, c.ndim"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Также есть возможность обращаться к элементам numpy массива по спискам индексов"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Чтобы развернуть массив в одномерный, есть функция ravel:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"d = np.ravel(b)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Для создания массивов специального вида (состоящих уз нулей, единиц, пустых) есть отдельные функции:\n",
"\n",
"* zeros\n",
"* ones\n",
"* empty"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0., 0.],\n",
" [ 0., 0.]])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.zeros((2, 2))"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1., 1.],\n",
" [ 1., 1.]])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.ones((2, 2))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0., 0.],\n",
" [ 0., 0.]])"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.empty((2, 2))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Все арифметические операции над массивами производятся поэлементно:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"A = np.arange(0, 9).reshape(3, 3)\n",
"B = np.arange(1, 10).reshape(3, 3)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0, 1, 2],\n",
" [3, 4, 5],\n",
" [6, 7, 8]])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2, 3],\n",
" [4, 5, 6],\n",
" [7, 8, 9]])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 3, 5],\n",
" [ 7, 9, 11],\n",
" [13, 15, 17]])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A + B"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[-1, 0, 1],\n",
" [ 2, 3, 4],\n",
" [ 5, 6, 7]])"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A - 1"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Обратите внимание, что умножение тоже поэлементное:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 2, 6],\n",
" [12, 20, 30],\n",
" [42, 56, 72]])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A * B"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Если хотим умножить их как матрицы, можно писать так:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'A' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-38-b46d6dcb6e9f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mB\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mA\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mB\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'A' is not defined"
]
}
],
"source": [
"np.dot(A, B)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Обычно numpy функции принимают на вход numpy.array, поэтому все привычные операции можно выполнять над массивами:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 8, 36)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.min(A), np.max(A), np.sum(A)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(0, 8, 36)"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.min(A), np.max(A), np.sum(A)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0. , 1. , 1.41421356],\n",
" [ 1.73205081, 2. , 2.23606798],\n",
" [ 2.44948974, 2.64575131, 2.82842712]])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sqrt(A)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Эти же операции можно применять для заданной размерности массива (параметр axis):"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'A' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-39-efe0b1739672>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'A' is not defined"
]
}
],
"source": [
"np.min(A, axis=0), np.min(A, axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"В numpy работает привычная индексация питона:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 3, 4])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.arange(10)\n",
"a[2:5]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[2, 3],\n",
" [7, 8]])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = np.reshape(a, (2, 5))\n",
"b[:, 2:4]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Но появляется также и логическая индексация:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 3, 4, 5, 8])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.arange(10)\n",
"good = np.array([True, False, False, True, True, True, False, False, True, False])\n",
"a[good] "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Почему это может понадобиться: как описано выше, к numpy.array можно применять операции, которые будут выполнены поэлементно, в том числе и логические:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ True, False, True, False, True, False, True, False, True, False], dtype=bool)"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a % 2 == 0"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Поэтому чтобы найти все четные элементы данного массива, можно просто выполнить строчку:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 2, 4, 6, 8])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[a % 2 == 0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Чтобы написать более сложные логические условия, можно воспользоваться функциями numpy:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([6, 8])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[np.logical_and(a > 4, a % 2 == 0)]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Для некоторых случаев есть уже готовые функции:"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[a.nonzero()]"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Одно из полезных знаний — конкатенация многомерных массивов:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"a = np.arange(0, 10).reshape((2, 5))\n",
"b = np.arange(20, 30).reshape((5, 2))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Существуют два типа конкатенации: горизонтальная"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 1, 2, 3, 4, 20, 22, 24, 26, 28],\n",
" [ 5, 6, 7, 8, 9, 21, 23, 25, 27, 29]])"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.hstack((a, b.T))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"и вертикальная"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 5],\n",
" [ 1, 6],\n",
" [ 2, 7],\n",
" [ 3, 8],\n",
" [ 4, 9],\n",
" [20, 21],\n",
" [22, 23],\n",
" [24, 25],\n",
" [26, 27],\n",
" [28, 29]])"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.vstack((a.T, b))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Как сказано выше, в numpy есть также тип np.matrix. Основные отличия от np.array:\n",
"* matrix — строго 2-мерные;\n",
"* матричное умножение осуществляется через * (в отличие от dot для array)\n",
"\n",
"Сравните:"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0, 11, 24],\n",
" [ 39, 56, 75],\n",
" [ 96, 119, 144]])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.arange(0, 9).reshape((3, 3))\n",
"b = np.arange(10, 19).reshape((3, 3))\n",
"\n",
"a * b"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"matrix([[ 45, 48, 51],\n",
" [162, 174, 186],\n",
" [279, 300, 321]])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A = np.matrix(a)\n",
"B = np.matrix(b)\n",
"\n",
"A * B"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Зачем вообще нужен numpy? Потому что это быстро!"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"N = 1000000\n",
"\n",
"A_quick_arr = np.random.normal(size = (N,))\n",
"B_quick_arr = np.random.normal(size = (N,))\n",
"\n",
"A_slow_list = list(A_quick_arr)\n",
"B_slow_list = list(B_quick_arr)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10 loops, best of 3: 175 ms per loop\n"
]
}
],
"source": [
"%timeit sum([A_slow_list[i] * B_slow_list[i] for i in range(N)])"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1000 loops, best of 3: 1.39 ms per loop\n"
]
}
],
"source": [
"%timeit np.sum(A_quick_arr * B_quick_arr)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Немного про Matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import matplotlib.pylab as plt"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([-10. , -9.99, -9.98, ..., 9.98, 9.99, 10. ])"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_arr = np.linspace(-10, 10, 2001)\n",
"x_arr"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.54402111, 0.53560333, 0.527132 , ..., -0.527132 ,\n",
" -0.53560333, -0.54402111])"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sinx_arr = np.sin(x_arr)\n",
"sinx_arr"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Построим график синуса"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f3f806310b8>"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f8d44f668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x_arr, sinx_arr)\n",
"plt.title('sin(x)')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Добавим график косинуса"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"cosx_arr = np.cos(x_arr)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Чтобы различать графики, с помощью функции plt.legend добавим названия графиков."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f3f804d77f0>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f805c7da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x_arr, sinx_arr)\n",
"plt.plot(x_arr, cosx_arr)\n",
"\n",
"plt.title('sin(x) and cos(x)')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"plt.legend(['sin(x)', 'cos(x)'], loc='upper right', framealpha=0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Как можно было заметить, у функции plt.legend есть параметр loc, который отвечает за расположение легенды."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Графики, которые мы получили, не очень похожи на привычные нам. Дело в том, что оси координат имеют разный масштаб.\n",
"\n",
"Во-первых, исправим это с помощью вызова функции plt.axis('equal').\n",
"\n",
"Во-вторых, изменим размер графика."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f3f804267f0>"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3oAAAEWCAYAAAAw+uVwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XV4VMfXwPHvxAiBIME9uHvQFmmhLRTquLvUqJcKdadO\nhRYt7oUihUIppQKEIMGCayAkRAjxZHfn/WMSftC3aLO5yeV8noenNHuze7Lk7r1n5swZpbVGCCGE\nEEIIIYR9eFgdgBBCCCGEEEKI7CWJnhBCCCGEEELYjCR6QgghhBBCCGEzkugJIYQQQgghhM1IoieE\nEEIIIYQQNiOJnhBCCCGEEELYjCR6QgghLKWUelkpNfkGjq+jlApRSqnrOHaxUqrzf4vw+imljiul\nOubg6+Xa90IIIYS1lOyjJ4QQIi9RSi0GFmqt513Hsc2Bb7XWTd0fmUn0gGFa63U59Hq59r0QQghh\nLZnRE0IIkWcopcoAdwBLr+d4rXUwUEgpFeTWwCwg74UQQoirkURPCCFEjlBKvaiUOq2USlBKHVBK\ndcj8+htKqVmZfw9USmml1ECl1EmlVLRS6pVLnuYuYLvWOjXz+KpKqVilVJPM/y+rlDqnlGp/yfds\nALpcIaaiSqkVmd8Tl/n38pc8vkEp9bZS6q/MuH9RShW/5PH+SqkTSqmYf8T5b6+VXyn1Sebx8Uqp\nP5VS+TMfu18ptVcpdT7zNWtf633L7vdCCCGEvUiiJ4QQwu2UUjWBx4FmWmt/4B7g+FW+5XagJtAB\neO2SxKc+cCDrIK31EeBFYJZSyg+YBvygtd5wyXOFAQ2v8Doemd9TCagIpABf/eOYPsBgoCTgAzyX\n+TPVAb4F+gNlgWJAea7sY6Ap0BoIAF4AXEqpGsBc4CmgBLAKWK6U8rnG+5bd74UQQggbkURPCCFE\nTnAC+YA6SilvrfXxzMTkSt7UWqdorUOBUP6XnBQBEi49UGs9CTgMbAHKAP+cWUvI/L7/R2sdo7Ve\nrLVO1lonAO8C7f5x2DSt9UGtdQqwAGiU+fVuwAqt9UatdRowDnD92+sopTyAIcAYrfVprbVTa/13\n5vf1BFZqrddqrTMwCWF+TEJ4tfctW98LIYQQ9iKJnhBCCLfTWh/GzFi9AUQppeYppcpe5VvOXvL3\nZKBg5t/jAP9/OX4SUA+YkJk8XcofOP9vL6KU8lNKfZdZTnkB2AgUUUp5XkcsZYFTWQ9orZOAmCv8\nPMUBX+DfktuywIlLnseV+bzlrvG+Zet7IYQQwl4k0RNCCJEjtNZztNa3Y8okNfDhTTzNLqDGpV9Q\nShUEPgemAG8opQL+8T21MbOC/+ZZTIloC611IaBt1tNeRywRQIVL4vDDlG/+m2ggFaj6L4+dwbwn\nWc+jMp/3NFz1fcvu90IIIYSNSKInhBDC7ZRSNZVSdyql8mESnhSuUOZ4DWuBJkop30u+9gUQorUe\nBqwEJv7je9oBP1/h+fwzYzmfmRS9fgOxLAK6KqVuV0r5AG9xhetq5izdVODTzCYpnkqpVpnvxwKg\ni1Kqg1LKG5N8pgF/X+N9y+73QgghhI1IoieEECIn5AM+wMxsncU0NnnpRp9Eax0JrAceAFBKPQB0\nAkZnHvIMJvnpm/l4MyAxc2uBf/M5Zj1cNLAZWH0DsewFHgPmYGb34oDwq3zLc8BuYCsQi5mZ89Ba\nHwD6ARMy47gPuE9rnc5V3jc3vBdCCCFsRDZMF0IIkadkdrv8AWiur3ERy9xQfIrWelWOBJfD5L0Q\nQghxJZLoCSGEEEIIIYTNSOmmEEIIIYQQQtiMJHpCCCGEEEIIYTOS6AkhhBBCCCGEzXhZHcCNKF68\nuA4MDLQ6DCGEEEIIIYSwxLZt26K11iWudVyeSvQCAwMJCQmxOgwhhBBCCCGEsIRS6sT1HCelm0II\nIYQQQghhM5LoCSGEEEIIIYTNSKInhBBCCCGEEDaTp9boCSGEEEIIIewvIyOD8PBwUlNTrQ7FMr6+\nvpQvXx5vb++b+n5J9IQQQgghhBC5Snh4OP7+/gQGBqKUsjqcHKe1JiYmhvDwcCpXrnxTzyGlm0II\nIYQQQohcJTU1lWLFit2SSR6AUopixYr9pxlNSfSEEEIIIYQQuc6tmuRl+a8/vyR6QgghhBBCCGEz\nkugJIYQQQgghhM1IoieEEEIIIYQQ1zBs2DD27dt3zeM+//xzZsyYcdVjevXqxaFDh7IrtH8liZ4Q\nQgghhBBCXMPkyZOpU6fOVY9xOBxMnTqVPn36XPW40aNH89FHH2VneP+PbK8ghBBCCCGEyLXeXL6X\nfWcuZOtz1ilbiNfvq3vFx5OSkujRowfh4eE4nU7GjRvHt99+y8cff0xQUBAFCxZkzJgxrFixgvz5\n87Ns2TJKlSrF+vXradKkCV5eXjgcDlq1asX48eNp3749L730Eh4eHrz77ru0adOGQYMG4XA48PJy\nT0omM3pCCCGEEEIIcYnVq1dTtmxZQkND2bNnD506dbrs8aSkJFq2bEloaCht27Zl0qRJAPz11180\nbdoUAC8vL6ZPn87o0aNZt24dq1ev5vXXXwfAw8ODatWqERoa6rafQWb0hBBCCCGEELnW1Wbe3KV+\n/fo8++yzvPjii3Tt2pU2bdpc9riPjw9du3YFoGnTpqxduxaAiIgIateuffG4unXr0r9/f7p27cqm\nTZvw8fG5+FjJkiU5c+bMxcQwu0miJ4QQQgghhBCXqFGjBtu3b2fVqlW8+uqrdOjQ4bLHvb29L+5z\n5+npicPhACB//vz/b5Pz3bt3U6RIEaKioi77empqKvnz53fbzyCJnhBCCCGEEEJc4syZMwQEBNCv\nXz+KFCnC5MmTr+v7ateuzeHDhy/+/5IlS4iNjWXjxo107dqV4OBgihQpAsDBgwepV6+eW+IHWaMn\nhBBCCCGEEJfZvXs3zZs3p1GjRrz55pu8+uqr1/V9nTt3ZuPGjQBER0czduxYJk+eTI0aNXj88ccZ\nM2YMAJGRkeTPn5/SpUu77WdQWmu3PXl2CwoK0iEhIVaHIYQQQgghhHCjsLCwy9a65SUPPfQQH330\nEdWrV7/iMZ999hmFChVi6NChV32uf3sflFLbtNZB14pDZvSEEEIIIYQQIpt88MEHREREXPWYIkWK\nMHDgQLfGIWv0hBBCCCGEECKb1KxZk5o1a171mMGDB7s9DpnRE0IIIYQQQgibkURPCCGEEEIIIWxG\nEj0hhBBCCCGEsBlJ9IQQQgghhBDCZiTRE0IIIYQQQohstmPHjmtun/DVV18xdepUt7y+JHpCCCGE\nEEIIkc3ee+89nnzyyaseM2TIECZMmOCW15ftFYQQQgghhBC5189j4ezu7H3O0vWh8wdXPWTGjBl8\n/PHHKKVo0KABb7/9NkOGDCE6OpoSJUowbdo0KlasyMKFC3nzzTfx9PSkcOHCbNy4kYSEBHbt2kXD\nhg0BGDNmDMWKFeO1115jzZo1vPvuu2zYsAE/Pz8CAwMJDg6mefPm2fojSqInhBBCCCGEEJfYu3cv\n77zzDn///TfFixcnNjaWgQMHXvwzdepUnnzySZYuXcpbb73FmjVrKFeuHOfPnwcgJCSEevXqXXy+\n999/n2bNmtGmTRuefPJJVq1ahYeHKa4MCgrijz/+sE+ip5SqAMwASgEa+F5r/YVV8QghhBBCCCFy\noWvMvLnD+vXr6d69O8WLFwcgICCATZs2sWTJEgD69+/PCy+8AMBtt93GoEGD6NGjBw8//DAAERER\nlChR4uLz+fn5MWnSJNq2bctnn31G1apVLz5WsmRJ9u/fn+0/g5Vr9BzAs1rrOkBL4DGlVB0L4xFC\nCCGEEEKIGzJx4kTeeecdTp06RdOmTYmJiSF//vykpqZedtzu3bspVqwYZ86cuezrqamp5M+fP9vj\nsizR01pHaK23Z/49AQgDylkVjxBCCCGEEEIA3HnnnSxcuJCYmBgAYmNjad26NfPmzQNg9uzZtGnT\nBoAjR47QokUL3nrrLUqUKMGpU6eoXbs2hw8fvvh8J06c4JNPPmHHjh38/PPPbNmy5eJjBw8evKzM\nM7vkijV6SqlAoDGw5V8eGwGMAKhYsWKOxiWEEEIIIYS49dStW5dXXnmFdu3a4enpSePGjZkwYQKD\nBw9m/PjxF5uxADz//PMcOnQIrTUdOnSgYcOGKKWIj48nISGBggULMnToUD7++GPKli3LlClTGDRo\nEFu3bsXX15e//vqLN954I9t/BqW1zvYnvaEAlCoI/A68q7VecrVjg4KCdEhISM4EJoQQQgghhLBE\nWFgYtWvXtjqM/+Szzz7D39+fYcOGXfGYHTt28OmnnzJz5sx/ffzf3gel1DatddC1Xt/SffSUUt7A\nYmD2tZI8IYQQQgghhMgrRo8eTb58+a56THR0NG+//bZbXt/KrpsKmAKEaa0/tSoOIYQQQgghRO6j\ntcakDHmTr68v/fv3v+oxd9111xUf+6+Vl1bO6N0G9AfuVErtzPxzr4XxCCGEEEIIIXIBX19fYmJi\n/nOyk1dprYmJicHX1/emn8OyGT2t9Z9A3k3RhRBCCCGEEG5Rvnx5wsPDOXfunNWhWMbX15fy5cvf\n9Pfniq6bQgghhBBCCJHF29ubypUrWx1GnmZpMxYhhBBCCCGEENlPEj0hhBBCCCGEsBlJ9IQQQggh\nhBDCZiTRE0IIIYQQQgibkURPCCGEEEIIIWxGEj0hhBBCCCGEsBlJ9IQQQgghhBDCZiTRE0IIIYQQ\nQgibkURPCCGEEEIIIWxGEj0hhBBCCCGEsBlJ9IQQQgghhBDCZiTRE0IIIYQQQgibkURPCCGEEEII\nIWxGEj0hhBBCCCGEsBlJ9IQQQgghhBDCZiTRE0IIIYQQQgibkURPCCGEEEIIIWxGEj0hhBBCCCGE\nsBlJ9IQQQgghhBDCZiTRE0IIIYQQQgibkURPCCGEEEIIIWxGEj0hhBBCCCGEsBlJ9IQQQgghhBDC\nZiTRE0IIIYQQQgibkURPCCGEEEIIIWxGEj0hhBBCCCGEsBlJ9IQQQgghhBDCZiTRE0IIIYQQQgib\nsTTRU0pNVUpFKaX2WBmHEEIIIYQQQtiJ1TN604FOFscghBBCCCGEELbiZeWLa603KqUCrYxBCLdJ\niIToA3D+pPmTGAXpSeaPywFe+cDLF/L5Q+FyUKg8FK0Epeqar+UhWmvOxKdyMDKB49FJxCSmE5OU\nxvnkDJwujUuDUlA4vzdF/bwpWsCHwGIFqFKiAIHFCuDr7Wn1jyDE/ySeg+iDEHcczp+ApHOQlgjp\nieBygpdP5rlbCAqVhULlMs/deuBbyOrob4jWmoj4VA5HJXIsOolzCWnEJKVzPjkdh0tfPM7f14sA\nPx8CCvpQoagf1UoWpHJxOXdFLpMcC1Fh5pobfwoSIv533XWmZ15384NPAXPeFi4HRSqa627+olZH\nf0O01py9kMrRc0kcPZfI2QupxCVnEJ+cQZrDiVIKBfj5eFKsYD6KFfShXJH8VCtZkKolCsq5e4uw\nNNG7HkqpEcAIgIoVK1ocjRBXoDWc2w+H18HJzXBmB1w4fckBCgoUB5+C5o+HBzjSwJEKKech9fzl\nxwZUgbKNoUo7qHIHFKmQ0z/RVaU7XGw/GceWo7EEH48h9FQ8iWmOi497KAgokI+ift54eig8lMKl\nNXtSMjifnEFKhvPisZ4eitpl/GlasShBgQG0qV6cIn4+VvxY4lakNUQfMufuqc1weru5QbxIgV+A\nOW/z+YOHJzjSwZkGKXHmz6WKBkLZJpnnbnvz/7mIw+li+8nzBB+LYcuxWHaePE/CP87don4+FC3g\ng7enKfrRWpOQ6iA2Kf2yc1cpqFnKn2aBATSrHMBtVYtRrGC+HP+ZxC0s5ggcWQ/H/zTX3fMnLn/c\nr1jmdbcAePqYZC8jGdISIDnm8mOLVIKyjaByW6h6p7kO5yJOl2bnqfNsPhrDthNxbDsRR3xKxsXH\nPRQU8fOhiJ83+bw80VqjNSRnOIhJTCc53XnZsVVKFKR55QBaVA6gVZVilCzka8WPJdxMaa2vfZQ7\nAzAzeiu01vWudWxQUJAOCQlxe0xCXBet4VQw7F4AB1bDhXDz9YAq5kavXBMoWceM9Bcqb2YBriQ9\nCS6cMRets7sgIhTCt0JipHm8eA2o+xDU6wYlarj/Z/sXqRlONhw4x+o9Efy6P4qEVAdKQa3ShQiq\nVJSapf2pUcqfysULUKyADx4e6orPlZTm4Fh0Ekejkzh4NoHtJ+PYeeo8yelOPD0UzQKLcned0nRt\nWIaS/nLxEdlMazizHXYthAOr/ndzWKQSlGt6ybkbCIXLm1mAK8lIufzcPbvLfC4kRJjHA6pmnruP\nQKk6bv/R/k26w8WGA1Gs2RvJr/sjOZ9sbg5rlvInKLAotcoUolqJglQtWYDiBfJd9dxNTndwPDqZ\nI+cSORSZwI5T59l+Io6kdCceCoIqBXB33VLcW78MZYvkz6kfUdwqtDbn2K4FsH8lxB0zXy9c0Zy3\nZRtB6fpQtLKZsfO+yvUjI9UMyMYdg7O74cxOOL3tfwM9RQOh9v1Qv7t5TnXl88JdHE4XGw+dY/We\ns/waFkVMUjoA1UoWJKhSUeqWK0zV4gWoUqIgJf2vfe6Gx6VwMDKBg5GJ7A4/T8jxuIsDPU0qFqFT\nvdJ0rleGCgF+OfLziZunlNqmtQ665nGS6AlxgxKjIGQahM4xpV1e+aFaB6h+F1TraG4Ms4PWpgTl\n6G9w4GczYomG0g0gaAg06GFGKd1s/9kLzAs+xZLt4VxIdVDEz5u7apfirjqlaFG5GIX9vLPldRxO\nF7tOx/NrWCRr90VyMDIRTw/FHTVL0D2oAh1qlcTL0+plxSJPS4qG7T/AzrkQcwg885mR+6xzt2il\n7HkdrU3p59ENJpE8thG0yySPQUOgQc8cKfE8FJnA/K2nWLLjNLFJ6RTy9aJj7VLcXbcULasUy7aZ\nc4fTxb6IC/waFsWavWfZfzYBpaBt9RL0bFaBjrVL4eMl5674D1LiYMcs2D7TLInw8Iaqd0D1u805\nXKxq9ryO1hB71MwSHlxjrr8uhxlsbTIQGveD/EWy57Wu4ui5RBaEhLN4ezjnEtLw9/Xijpol6Vin\nFLdXK05Agew5d50uTVjEBTYciGL13rPsOX0BgNuqFaNXs4rcXbcU+bykxDM3kkRPiOwWsQu2TITd\nC035R5X20KAX1O6aM2vqEs7C3qWwc5YZfcxXGBr3hVaPZV9ymUlrzcZD0Xzz22G2HIvFx9ODe+qV\npkdQeVpVKZYjCdeRc4ks2hbO4m3hRCWkUa5IfobeXpmezSpQIF+urzoXuUnkPtj8jZkFcKZBpdtM\nslXngRy5aSMxCvYtg52zTXmZT0Fo2AtaP5l9yWUmrTWbjsbw7YYj/HEoGi8PxV11StGjWQVur1b8\nYjmmOx2PTmLJ9nAWhIRz9kIqpQrlY8htlendoiKFfLNnYEjcIqIPweZvIXSuKbms0MKcO3UeNCXV\n7pYUA2HLIHQenNoC3n7ms6P1E9mXXF4i5HgsE38/yrqwyMyBzpL0bFaBdjVK5MhgyanYZH7ccZr5\nW09x+nwKxQv6MKh1IP1bBmbboK7IHnki0VNKzQXaA8WBSOB1rfWUKx0viZ6wRMQu+O09OPiz+ZBv\n1BdajILi1ayJJ6tkNPh72LcUlAc07g+3P/2f1/JprVm95yxfbzjMntMXKF3IlyG3B9KtaYVsG0G8\nUQ6ni1/3RzH5j6NsPR5HIV8vhrWpwtDbK0vCJ64uKgw2vG+SLK/85gaxxSgoWcu6mMK3wdbJsGeR\nmeVr2BvaPAsBlf/T02qt+TUsigm/HSb01HmKF8zH4NsC6dmsAsUtWjfndGl+PxjFlD+P8dfhGPzz\neTGgdSVGtK1K4fxy0yiuIvow/P4B7F4Ent6mfLLFSCjT0LqYIkIheNL/Bnvr94C2z2fLvcAfh87x\n+bpDbDsRR1E/bwa0CqRvi4qWrZtzuTR/HI5m2l/H2HDgHAV8POnXshKj2lWlqEX3AuJyeSLRu1GS\n6IkcFX0I1r9jkinfwmYEr9mw3NWZK+4E/PmZKWkBUxbWfuxNjXRuORrDe6vCCA2Pp3LxAoxqV4UH\nG5fLVWUb20/G8c1vR1gXFknxgj48dkc1+rSomKtiFLlA7DFz7u5ZbGbPWo42f3JiBuB6xZ+Gv76A\nbdNNaViTAXDHK1CwxA0/1faTcby/Koytx+OoVMyPEW2r8EiT8rmqq97u8Hgm/n6ElbsjKOLnzaPt\nqzKgVWCuilHkAudPmcGZ0Lmms23zEdDq8Zs6L9wmMcqcu1unmAqBhr3hznFQqMwNP9Wu8PN8uHo/\nfx2OoVyR/IxsV4XuTSuQ3yf3nBf7zlxg4u9HWLHrDAV8vBjVvipDbqucq2K8FUmiJ8TNSr0Av39o\nyjS9fKHlo6Y8MidKvG7W+VPwx8ewfYZp+d7+JWg21IyEXsOx6CTeXbmPdWFRlCnsy7N31+ShxuXw\nvMqibqttPxnH+NUH2HQ0hooBfrxxfx3urFXK6rCE1dKT4I9P4e8Jpjtmi5GmPDI3JXj/lHDWxBwy\nxVQMtHnWJKVXawCTKTwumXdXhvHznrOU8M/HUx2r0zOoQq5ey7rndDwfrTnAxoPnKFvYl3Fd69Cp\nXmmUBY0uRC6SkQp/f2nOBe0yg6q3PwUFS1od2ZVlJXzB35s1g22eNkmp97WbEEVeSOXdlWH8FHqG\ngAI+PHFn7h+0PBiZwEer97MuLIpShfIxtnMtHmxUTs5di0iiJ8SN0tqs4Vk7znyAN+4HHV7PXSOJ\n1xK5F9a8bJpAFK8B930BlVr/66HpDhff/X6ECb8dxsfTg9HtqzL09sp5ZoRda80fh6J5c/lejpxL\n4q46pXitax3pFnYr0trMvK9+GRLOmDU0Hd8we9zlFdGH4JdX4eBq0zHwvi/MFg3/IsPpYsqfx/hi\n3SEARrWryrA2eauU+e8j0by9IoywiAu0q1GCN++vS2Bx9zeXErnQgZ/h5xdN99s6D8Dd75i97fKK\n2GPmviFsuen+2eVjqHHPvx7qcLqYsekEn649SLrTxYg2VRjZrgr+eWjtavCxWN5duY/Q8HhaVSnG\n2w/Wo1rJglaHdcuRRE+IGxEfDj89CUd+Ne3V7x1v/psXaW1uFle9APEnIWiouem9pMtf8LFYXv5x\nN4ejEunSoAyvd62TZ/fQSXeYm94vfz2ERvPc3TUZclvlq7aZFjaSEAkrn4H9K0xH2nvHQ8WWVkd1\n846sh5XPms5/jfuZm95LysV3nIxj7OLdHIhM4O46pXj9/rqUy6PbGPzzpndMh+qMbFslV89IimyU\nFAM/P29KrEvUhs4fXnFwI0849geses7sqVu/O3T6wOyfm2nP6XheXLyLvWcu0LZGCd7Kw4MbTpdm\n3taTfPjzflIynIxqV5Un7qwu3XVzkCR6QlwPrU2545pXTLnIXW+axMjDBh9WaYnw27umY5l/GXjg\nK1IrtefD1fuZ9tdxyhXJzzsP1uOOWrm4NOYGnDmfwrile/h1fxTNAwMY370BlYrlzYuouA5aw675\nZiYgIwXufAVaPgaeeWdW64oyUkz5+F9fmg2f7/+S9Kr38OWvh/hmw2FKF/LlzQfqcVcde5QrR15I\n5a3l+1i5O4KGFYrwSfeGMkNgd3t/hJXPQWo8tHvBNBO7jqUGuZ4jzZSf/vGJ6cbd5WMctR/i2w1H\n+OLXQwQU8OGN++vS2SblytGJaby3MowlO05Tu0whPu3RkNpl3L91jJBET4hrS4yCpaPh8DoIbAP3\nT/jPne9ypfAQWPYYnNvPEp/7eenCw/RqVZ0XO9fCz8cGN8WX0FqzePtp3ly+F4dT8/K9tejXspIt\nLqjiEsmx8NMTZhavQgt44GsoXt3qqLJfxC5Y9iic3c3KfJ15Nr4H9zWtymv31clTpV7Xa3noGcYt\n20NKupMXOtVicOtAmZm3m9R4WPG0mcUr0wge/AZK1bU6quwXFWauu6e3sT5fB56I78OdDavy9gN1\ns23/ytxk3b5Ixi7ZxYUUB0/fVYMRbavk6nX+diCJnhBXc2Q9LBkJaRdMaZRdZvH+hculmfb7PrzX\nv8EAz19ILFKLgn2mQ8naVofmNhHxKby4eDcbD57j7jqlGN+toewBZBcnNsHiYZAYCR1fN82SPPLG\nutIbpbVm9t+HSFnzFsM9lpPoX4WCvadB2UZWh+Y2UQmpvLR4N7/uj6JtjRJ81qMhxSzaHkJks9Pb\nYNEQ0zzsjpfgtqftMQN/BQuDjxG14m1GeSwhtUB5CvSeDuWveV+eZ8UkpvHKj3tYvfcszSsHMKF3\nY0rl0SUheYEkekL8G2eGKWf883MoURO6TYNSdayOym3ikzN4ZsFOft0fRae6pRnf6Cz+q8dAWgJ0\n+cSsAbIprTVT/jzGBz/vp1QhX77q05jGFXPR1hjixricpiRqw3tQpBJ0nwZlG1sdldskpjkYu3gX\nK3ZFcEfNEnzePJ7Cq5+ApGjo9L7pSmjTmWqtNXOCT/Lm8n0U9fNmQu8mNK+cizuniqtzuWDz17Du\nDbOM4JEpULGF1VG5TUq6k3HL9rBoWzitqhTj6zZpBKx+DC6cgQ6vwW1jbH3uLtl+mleX7sHPx5PP\nezWiTfU81NAuD5FET4h/SoyCBQPg5CZoMtAslPaxb4fGPafjGT17G2fjUxnXtQ79s0oYE6PMjMix\n36HpIOj80XW1cs+rdpyM4/E5O4i8kMrYzrUYentlKeXMa5JiYPEQ0022fnfo8ullzYXsZv/ZCzw6\nazvHY5J47p6ajGpb1ZQwJsfCj6Pg0Bpo0Au6fmbrz7C9Z+J5fM4OTsYm88xdNRjdrqqUcuY1Kefh\nx5GmQVitrmaJRG7e7uQ/OhyVyGOzt3MwKoEn7qjGmI41TAljynlY/iTsWwa174MHvrH1Z9ihyAQe\nnb2dw+cSeeLO6ozpUF1KObOZJHpCXCp8G8zvBylx5kLToLvVEbnV/K0nGbdsL8UK+PB13yY0+edM\nlstpNpT+81Mo2wR6zIAiFawJNgfEJ2fw/KJQftkXyUONy/H+w/XzzDYSt7yzu2FeH9Nds8vH0Li/\nbUfDAX56vk05AAAgAElEQVTcEc5LS3ZTyNebL3s3pmWVYpcf4HKZPTN/e8+sbeoxA4pVtSbYHJCY\n5uClJbtZHnqGTnVL80mPhnlqG4lb2rkD5tyNOw73vA/Nh9v63F295yzPLNiJr7cnn/dsRNsa/5jJ\n0ho2fQVrXzfnbM9ZprLIppLTHYxbupfF28NpW6MEE3o3pnB+WUKRXSTREyLLjlmw4hnwLwW95kDp\n+lZH5DYOp4s3l+9j5uYTtKlenM97Nrr6+pawFaYhjYcX9PgBKrfNuWBzmNaar387zMe/HKR+ucJ8\nP6ApZQrnzbb0t4w9i2HpY2Z7gZ6zoHwe3fLkOrhcmo/WHGDi70doWSWACb2bUML/Kufu4XVmZt7l\ngm5ToXrHnAs2h2mtmfrXcd5duY8apfyZNCBI9svM7favgiUjwNsXesyESq2sjshttNZMWH+YT9ce\npFGFIkzs15TSha+yNu3YH7BwEDhS4cFvoc79ORarFeYGn+S1ZXuoUNSPSQODqFpCOupmB0n0csim\nIzH4envI2p/cyOkwm4cHfweV20H36bYuGYlPyeDxOdv541A0I9pW4cVOta6vVCL6sBl1jT0CXT+H\nJv3dH6yF1u6L5On5ZtR1Yr8mBAXa93ciz3K5YP1b8OdnUKGlmbXyt8dWAv8mMc3BU/N2sC4sir4t\nKvLG/XXxvp695OJOwPy+ELkXOn0ILUa4P1gL/XHoHI/P2YGHgq/7NqF11eLX/iaRs7SGjePNWvgy\njaDXbChc3uqo3CYl3cnzi0JZsSuChxuX473rrRaJP22WkpwOgQ6vm+0lbDzbGXwsltGztpHudDGh\nd2Pa17THtk5WkkQvB2itue+rPzkclcjnPRvTqV5pq0MSWdISTXevQ2vM3lp3vWXr7l7Ho5MY+sNW\nTsYm8+6D9enR7AbLMFPjzQjjkfVmoXiHN2zbhRTM+oHhM0I4fT6F8d0a8mDjclaHJLJkpJiZgLCf\noOngzDWk9mtHnuVUbDLDZ4RwKCqR17rWYUCrG9wOJC3RzOwd/BmajzAlcjb/rBs2I4Rj0Um8/UA9\n+rSoaHVIIosjHX563Oxv2aAX3Pc5eNu3aiIiPoURM7ax50w8L3aqxci2VW7s3M1IgaWPwt4l0Kif\nWXNr48+68Lhkhs/YxoGzF3ilSx2G3m7D7axykCR6OSQ6MY1hP4QQGn6eV+UXN3e4EAFzekDkHrh3\nvOlOZ2Obj8YwatY2ACb2a/r/1/RcL6cDfn4BQqaYRfMPfw8+9t1wPD45gxEzQ9hyLJbn76nJo+2r\nSpMWqyVFw9zeEL7VbHvS6jFbj3LvPHWeodO3ku508U3fJjffnc7lhLWvmfU/1TqabsI2bvSQkJrB\nE3N3sOHAOR67oyrP3V1Tzl2rpcTB/P5w/A+441Vo+5ytz92wiAsMmhZMYqqDL3s3pkPtm6w4cLlg\nw/uw8SOzn2+PGbauPEpOd/DM/FBW7z3L4NsCebVLHWnScpMk0ctBKelOnpq/gzV7IxnUOpBxXeUX\n1zKR+2B2d3PR6T4datxtdURutWLXGZ6ZH0r5gPxMHdiMwOL/MTHTGrZMhNUvQZmG0HchFLRviUWa\nw8kLi3axbOcZejevwNsP1MPrekrmRPaLPgyzu0FChBlkqPOA1RG51W/7o3h09naK+/swfXDz7Fm3\nsm06rHwWiteAfouhUNn//py5lMPpYtyyPcwNPsWDjcryYbcG5POSBkuWiDthrruxR+GBr6FhT6sj\ncqu/j0QzcsY2CuTzYvqQZtQqnQ2DKqHz4KcnoEhF6LsIAuw7aeByad5ZGcbUv47RuV5pPuvZSJqj\n3QRJ9HKY06V5b1UYU/48xl11SvFlr8bk95Ff3Bx1dIMZUfT2g74LTKJiY9P/OsabK/bRtGJRJg8M\noohfNpZ8HFhtSjkLlYF+S2x90dFa88kvB/nqt8O0q1GCr/s2oaB09ctZJzfD3F6gPKD3fKjQzOqI\n3GpByCleWrKb2mX8mTao+dWbrtyoI7+Zz8H8Rcy5W6JG9j13LqO15psNRxi/5gAtqwTwXf8g6eqX\n005vhzk9wZkGPWdD5TZWR+RWy0PP8OyCUCoV8+OHIc0pWyQbS1NP/G0qGrzymYEaGzeOA5j8x1He\nXRVG04pFmTQgiKIF7Fu26g6S6Fnk0pvvKYOayUUnp+z9ERYPh+LVzSyUjRd/a635+JcDfP3bETrW\nLsVXfRq7ZzTs1FaY0x08vM1Fp0yD7H+NXGRu8EleXbqHOmUKMX1ws6t3KxXZ58DPsGCgOWf7LYKA\nKlZH5DZaa75af5hP1h6kTfXifNuvqXsGFc7sNLOjLqf5PCx/zXuBPG3pjtM8vyiUysULMGNIi6t3\nPBTZ58hvMK8v+BUzv2cla1kdkVtN/uMo76wMo3lgAJMGBFHYzw33d1H7YdbDkJYAvedC4O3Z/xq5\nyMpdETy9YCfli+bnh8HNpZvuDbjeRE9qlLLZoNsq81XvJoSGn6fX95uJSki1OiT72zYdFg6Gck1h\n8M+2TvIcThcvLt7F178doXfzCkzs18R9JQ8VmsGQNeDpA9PuhWMb3fM6uUTv5hWZNKApByMT6P7d\nJs6cT7E6JPsLnW9uFEvVgaFrbZ3kOV2accv28MnagzzUuBxTBjZz38xx2UYw9BezTu+H++DQWve8\nTi7xYONy/DCkOafjUug28W9OxCRZHZL97fvJrIUvGgjD1to6yXO5NO+s2Mc7K8PoXK80M4Y2d0+S\nB+Z9HPoL+JeBmQ+b99nGujQow+xhLYhJTKfbxL85FJlgdUi2I4meG3RpUIYpA5txPDqJ7hM3cSo2\n2eqQ7OvPz2D5GNOAoP+PplzJplIznIycuY0FIeE82aE67z1U3/3ryUrUhKFroHA5mPUI7F3q3tez\n2J21SjFzaAvOXUij27d/c+RcotUh2deW7+DHEVCpNQxcDgVusolQHpDhdDFm3g5mbT7JyHZV+KR7\nQ3y83HzuBlQxyXOxaqa0budc976exVpXLc7cES1JSnPQbeImwiIuWB2SfW2fCQsHmu0TBq8Ef/t2\nHHe5NK8s3c3kP48xsFUlvurjxsHVLIXLw5DVpopm4UAImebe17NYs8AAFoxshdbQ47tN7Ao/b3VI\ntiKJnpu0rVGC2cNbcD45g24T/+bAWRmlyFZawy/jYN0bUK+b2Qjdx75T/inpTob9EML6A1G8/WA9\nnrmrRs51mStc3syUlm0MiwbDzjk587oWaV45gLkjWpLmcNFj4ib2nI63OiR70Ro2fGg6vNbsYhoP\n5PO3Oiq3SXe4eHLuDlbsimBs51q81Lk2HjnVrKtgSRi0EgJvg6WjIHhSzryuRRqUL8LCUa3wVIqe\n321i24k4q0Oyn7+/MlsoVLkDBiyF/PbdQ9jp0ryweBdzg0/x+B3VeOP+ujnXaM8vAAYsg6odYMVT\n8OfnOfO6FqlZ2p+Fo1pR0NeLPpO2sPlojNUh2YYkem7UpGLRy0YpdpyUi062cDlNd6q/vzRbJzw8\nydZ7zySnOxg8PZi/jkTzcbeG9G9ZKeeD8AswM6aV28HS0bB1cs7HkIPqlSvMwlGt8PX2pNf3m+Wi\nk11cLtPRdcN70LCPaSXubd/1VGkOJ4/N2c7Pe87yapfajGpXNeeD8C0EfRZCjc6w6jn468ucjyEH\nVSvpz6LRrQgo4EO/yVvYePCc1SHZg9bw69vwyytQ50HoPc/W2+84nC6eWxjKom3hPNWxOs/enYOD\nq1l8Cph1evUegXWvw2/vm38Hm6pUrAALR7amTGFfBk4NZv3+SKtDsgVJ9NysZml/Fo9uTRE/b/pN\n3kLwsVirQ8rbnBlmc+AdM6Ht83Dvx7be2DsxzcGgqVsJPhbL5z0b8UhTC9cf+hQwF/canU0L978n\nWBdLDqhSoiCLRreiVKF8DJwaLDeM/1XWAM2Wb6Hlo6YNu4039k7NcDJ61nbW7ovkzfvrMqyNhesP\nvX2h50yo+xCsHQcbPrD1DWP5on4sHNWawOIFGPrDVtbsPWt1SHmby2Vm4P/4GJoMhG5TbT246nC6\neHpBKD/uOM1zd9fgqY4WJHlZPL3NYHajfvD7B+b8tfG5W7qwL/NHtqJmaX9GzNjGsp2nrQ4pz7Pv\nHXIuUiHAjwUjW1E6c5Ti78PRVoeUNznSTeng3iVw11tw56u23pA1ITWDgVOD2XYyji96NeaBRuWs\nDunyG8ZfXjUleDa+6JQpnJ+Fo1pTtURBUzorI4w3x+kwM8E7Z0G7sXDPe7YeoEnNcDJi5jbW74/i\n3YfqMbB1oNUhmRvGR6ZAo75mg+a1r9n63C3hn495I1pSr1xhHpu9nZW7IqwOKW9yuWDl0xD8PbR+\nAu77Ajzsu3VUhtPFE3N3sDz0DGM71+LxO6tbHZJ5v++fAM2GmwHWVc+ZfxebCijgw+xhLWhSqShP\nzd/J/K0nrQ4pT7PvlTaXKVXIl3kjWlExwI/B07fyu8wO3BhHmlmUHLYc7nkfbhtjdURuFZ+SQf8p\nwYSeOs9XvRtzX8NctPFx1g1jwz6mBG/d67a+YQwo4MOc4S2oWdqfkTO3yezAjXI6TNOVXfPhznFw\nx0u2HqDJWk/7x6FzfPhIffq2sKDU+ko8POH+r0zJ+99fwqrnbX3DWDi/NzOGNKdRhSI8MXe7zA7c\nKJcTlj9hOlu3eRbuetvW5266w8Vjsy0utb4SDw+4dzy0ftIsnfjpcfPvY1P+vubcbVu9BC8u3s2c\nLZLs3SxJ9HJQCf98zB3RkqolCjL8hxB+DZPZgeuSkWo2AD6wypRqtnrU6ojcKj45g/5TtrD3TDzf\n9G1C5/plrA7p//PwNKV3QUPhry9MWY+Nk70ifj7MGtZCZgdulDPDzMLvWWxm4ds+Z3VEbpWU9r/1\ntOO7NaRns4pWh/T/eXiYz9HWT8DWSaac1uY3jD8MaU6zwACenr+TRdvCrQ4pb3A5YdljsCNzFv7O\ncbZO8lIznIyatY1fckOp9ZUoZT5H242FnbPNMhZnhtVRuY2vtyff9W/KnbVK8vKPu5mx6bjVIeVJ\nkujlsKzZgVpl/Bk1axur98jswFVlpMC8PnBoDXT9HJoPtzoit4pLSqfP5M3sj0hgYr+m3F03F7et\n9vCALp+YG8bg7826vVtgdqBxRTM7sHSHzA5clSMdFg6CsJ9MqabNZ+ET0xwMmhZM8LFYPuvRiG5W\nrqe9FqXM7Ey7saacdtljtk72CuTzYvrg5rSuWpznF4UyL1hmB67K6YAfR0LoXLjjFdvPwufKUusr\nUcr8e3R80yxjWTTE9snet/2a0LF2KV5btpepfx6zOqQ8RxI9C1w2OzBnO8tDz1gdUu6Ungxze8GR\n9abcKGiw1RG5VUxiGr0nbeZQVCLfD2hKh9qlrA7p2rJuGG9/GkKmwMpnbJ3s+ft6M31wc1pULsbT\nC3ayMOSU1SHlTo40WNAf9q+Azh9Bq8esjsitElIzGDBlC9tPnueLXo15sHEuWE97LVk3jHe8Ym7o\nlz5q62Qvv48nkwcG0bZ6CcYu2c3MzSesDil3cmbAkmGweyF0eA3avWB1RG6Vq0utr+b2p8wAWthP\npmrCxslePi9PvunbhHvqluKtFfuYtPGo1SHlKZLoWaSQrzczh7agacWijJm3gyXbpZzkMmmJMKcH\nHNsID02EJv2tjsitziWYJO9YdBJTBgbRvmZJq0O6fkpBh9fh9mdg2zSzcN/GyV6BfF5MHdSM26sV\n5/lFu2TtwD9lzcIfXA1dPoUWI62OyK3iUzLoNyWYXeHxuW897fVo94JpbLVrHvw4ytbJnq+3J98P\naErH2iUZt3SPzA78kyPdzBDt/dEM4LV51uqI3CpPlFpfTavHTM+CsOWmesKRbnVEbuPj5cFXfZrQ\npX4Z3l0VxrcbjlgdUp5h397WeUDBfF5MH9KMYT+E8OzCUJwuTfegClaHZb20BJjdHU4Fm7bC9btZ\nHZFbRV1Ipc/kLZyOS2HaoGa0rlbc6pBunFJm9Fd5mBbc2gVdv7BtZ8X8Pp5MGhDE6FnbePnH3Thd\nLvq3CrQ6LOulJ5sk7+gGuO9LaDrQ6ojc6nxyOv2nBLP/7AW+6dskd5daX03b5wEF698GNDw40bZb\nX5jZgaY8MXc7b63Yh9OlGd42F67HymmONFg4GA6sNMmDzdfCJ6Y5GDwtmG0n4vi8Z6Pc0dX6ZrR6\n1Fx3V79oZva6TbPt1hfenh580asRHh6KD1fvx+ly5Y6uqLmcPT/J8xA/Hy+mDGzGiJkhvLB4F06X\nplfzPDaqlJ1S42FWNzizHbpNMW38bexsfCp9Jm3m7IVUpg1uRssqxawO6eYp9b8tLzaON81Z7vvS\ntsmer7cnE/s35bHZOxi3bC8Ol2bwbZWtDss66Ukwpycc/xMe/AYa9bE6IreKTUqn3+QtHI5KZGK/\nPFJqfTVtnzM3jL++ac7dh76zbbKXNTvw1PydvLsqDIdLM7p9LuqwmNMyUmHBALMWvvN4aDHC6ojc\n6kJqBoOmBhMaHs+E3k3o0iAXNjy7ES1Hmevuzy+Ymb3u022b7Hl5evBZj4Z4eSg+/uUgDpfmqY41\nrA4rV7P0U1wp1Qn4AvAEJmutP7AyHqtkzQ6MnLmNsUt249Q679SJZ6eU8zDrYYjYZT6oat9ndURu\ndeZ8Cn0mbeZcQtrFrnB5nlJmzY/ygN8/BDTcN8G2yV7W2oEn5m7nzeVmdiBXdmtzt6xS65Ob4OHv\noUEPqyNyq+jENPpN3sLR6CS+H9A0b5VaX02bZ8w5vO4NQMND39s22fP29OCLno3wVLf47EBGKszv\nC4fXmVLrZkOtjsit4pMzGDAtmL2n4/m6T2M61cvjSV6WFiPNdXfVc2Yrqu4/2DrZ+7h7Qzw9FJ+v\nO4TLpXn6Lgs3tc/lLPsEV0p5Al8DdwHhwFal1E9a631WxWSlrDayj87ezis/7sHp0gy4lUrBUs7D\nzIfg7G7oMQNq3Wt1RG4VHpdM70mbOZ+UwcxhLWhSsajVIWUfpeCOlwEFv39gZgfun2DbTXazZgfG\nzNvBOyvDcLo0I3PT/kvulpaYWWq9+dYotU5Ipe+kLZyKS2bqwGbcXj0Pllpfze1PmxvGta+ZEuyH\nJ9s22fPy9OCzno1u3dmBrPW0R34zG6E3HWR1RG4Vl5RO/6lbOHA2gW/7NeWuOnl8Fv6fsrqSr3rO\nzND2+AG88lkbk5t4eig+eqQBnkrx5frDOFya5++pKcnev7jmp7dS6glgltY6LptfuzlwWGt9NPN1\n5gEPALdkogf/ayP72OwdvLZsLxlOzdDbb4FSsJS4zCRvD/ScCTU7Wx2RW52KTabX95tJSM1g1rAW\nNKxQxOqQ3COrJfeG902y98BXtk32vD09+LJXYzw9Qnn/5/04XJrH7qhmdVjud+l62kcmQ71HrI7I\nrSIvpNJ70mYizqcybVBzWlXNw6XWV3PbGEDB2nHm3H1kMnh6Wx2VW3h6KMZ3b4jHrTY7kJECc3ub\n9bT3T7B9w7OYxDT6TQnmyLlEvu8fxB21bDIL/0/Nh5vr7spnM5O9GbZN9jw8FO8/XB8PD8U3G47g\n1JqxnWrZ/9y9QdczTFcKM9u2HZgKrNE6W3ZGLgdc2ps8HGjxz4OUUiOAEQAVK9p/7VpWKdiTc3fw\n9op9uOy+UDwlDmY8CFH7oOcsqNnJ6ojc6nh0En0mbSYp3cmc4S2pV66w1SG5V/uxgIIN7wHabLJu\n02Qva+2Ap4Lxaw7gcGrGdLRxKVhagllPG771llhPGxGfQp9JW4i6kMoPQ5rTvLINSq2v5rYnzcze\nL68AGh6ZYutk79LZAafWPHe3jWcH0pNhXm84+rsZgGvcz+qI3Co6MY2+k7ZwPCaJyQOCaFujhNUh\nuVezYebcXfE0zO9vBtBtnOy9+2A9PD3gu9+P4nJpXr63tn3P3ZtwzURPa/2qUmoccDcwGPhKKbUA\nmKK1dnt/U63198D3AEFBQdmRYOZ6Pl4eTOjTmKfm2XyheHIszHwQosJMklfjHqsjcquj5xLpM2kL\naQ4nc4a3oG5Zmyd5Wdq/aC46v71jSsEe/NbWyd4nPUxXsM/WHcTpctlzdiD1AszuBuEh0G0q1H3Q\n6ojcKjwumT6TthCblM6Moc1pWsnmSV6W1o+b2YE1L5tz95Gptl33c+nswNe/HcHhsunsQNb+tMc2\n3hJNk2zR1fpmBA0BFKx4Cub3gx4zwdvX6qjcwsND8fYD9fBQikl/HMPpgnFdJdnLcl2F91prrZQ6\nC5wFHEBRYJFSaq3W+mZ30zwNXLqXQPnMrwlugTayybEw4wE4tx96zoYad1sdkVsdjkqkz6TNOF2a\nuSNaUqt0IatDylntngcFrH/H7NNl445+nh6K8d1MVzBbzg6kXoBZj5jOuN2nQZ0HrI7IrbJKrS9k\nllo3smup9ZW0eiyzffvYzI5+02w/O+Dlofju96M4nZpXutjohvGyzrjfQqPeVkfkVpd2tZ4+uBkt\n8nJX65sRNNgM1CwfY5K9nrNsm+wppXjz/rp4eiim/nUMl9a8fl8d+5y7/8H1rNEbAwwAooHJwPNa\n6wyllAdwCLjZRG8rUF0pVRmT4PUC7D20dINs20Y2ORZm3A/nDkKvOVD9LqsjcquDkQn0mbQFgHkj\nWlK9lL/FEVmk7fOgPE37dpfD9ut+Pni4AZ52mx1Ijc9M8naY/Zrq3G91RG51Wan1sJbUL3+LzML/\nU8vR4OFlmjzM72/W/dj0htHDQ/HWA+aGcfKfx3BqzWtdbXDDmJXknfjLDLQ17Gl1RG51OrOrdUxi\nOjOGNCfIDl2tb0bTQWag5qcnzUxurzng42d1VG6hlOK1rnXwVJnnrkvz5v118fDI4+fuf3Q9Q+oB\nwMNa6xOXflFr7VJKdb3ZF9ZaO5RSjwNrMNsrTNVa773Z57OrrDayHsomC8X/X5LX0eqI3Cos4gL9\nJm/B00MxZ3hLqpUsaHVI1mrzjEnufnnVJHs23tzVzA7Ux9MuswOp8TDzYYjYeUtsf3L0XCK9J20m\n3eG6tUqtr6T5cFNyveJp046/5yzwzm91VG6hlOL1++rg6aGYcskNY549d9OTYHYPOPm3SfJsvv3J\nqVjT1To+OYMZQ5vbq6v1zWgywAzULH3UbIPTZz74FLA6KrdQSvFKl9rmurvxKE6teeeBerd0snc9\na/Rev8pjYf/lxbXWq4BV/+U5bgWmFKzBxVKwDJfmhbzYRjYpxpRrRh+E3nOgmr2TvD2n4+k/ZQv5\nvDyZO6IllYvb84P1hrV+wlx0Vo+1fQvorLUDXh4eTP7zGA5XHi0nubjHZajZn6n2TY/x5QmHoxLo\nPWkLrlu11PpKgoaYc/fi7MBcW88OvNqltinj3HgUp0ubdUB57Ybx0j0uH/oeGnS3OiK3OhljkryE\n1AxmD29Bg/K3WKn1lTTqY87dH0eaJlp9F0A+e1YXKaUY27kWHh6KbzccweXSvPdQ/bx37mYTey6S\nsaGsheKenuYX1+nSvNQ5D5WCJcWYmbyYw9B7LlTrYHVEbrXz1HkGTNmCv683c4a3oFIxSfIuc1kp\nmL0Xil9pdiDPXHT+3x6XXayOyK2yZuGVUrd2qfWV3GKzA2M718Izq317XrthvMX2uDxyLpG+k7aQ\n6rhFulrfqAY9zLm7eJgpwe+7CHztOYillOKFe2ri5aGYsP4wTpfmg0fMcopbjSR6ecilC8W/33gU\nh1Pnjc5CiVFmC4XYI9B7HlS9w+qI3CrkeCyDpm0loIAPc4a3oHxRe454/2fNh5uLzoqnTKvvXnNs\nXQp22exAXiknSY41NwQXk7x7rY7IrfacjqfflC34enkyZ3gLqpS4xUutr+TS2YHZ3U2yZ+PZgefv\nqYln5g2jw6X5MC/cMKZeMIn4LbLH5YGzCfSdvAWtNfNkFv7K6j1sSrAXDTFdz/stgfz2nPVUSvHM\nXTXwUIovfj2EU2vGd2uY+8/dbCaJXh7zz85CTpeLN3Lz2oH406Zc88JpczNQpb3VEbnVpiMxDP1h\nK6UL+TJ7eAvKFLZn4pJtggabNXvLHjeNAnrPs3Up2GWzA059sZ17rpR4ztwIRB80+zDV7Gx1RG61\n/WQcA6cGU8jXm7nDW1KxmD1/D7NNgx7mhnHx8MxSsIW2nh149m6T7GWtlR/fPRffMCbHmu1PIkIz\nk7yHrY7IrbKWSXh7ejBnREuqlbTnoEO2qfOAGbhbMNDcn/X/Efzs2axGKcXTmcneZ+sOojV8nJvP\nXTeQRC8P+n+dhbTmrftz4exA3HH44X5z0em3BCq1sjoit9p48BzDZ4RQMcCP2cNbUNLfnqWI2a5x\nv8xSsNGXzA7YcyYla3Yga72tw6X5qFsunB24cMbcAJw/Zf49qt5pdURuFXwslsHTginun485w1tS\nrogM0FyXeo+Yc3fRELOGs99i8LVvudxTHWvgqRSfrD2IU2s+6d4QL08Pq8O6XOI5U2odfcCUxNt8\nFj5rmUTBfF7MGd6SQFkLf31qdTFVNPP7mfu0AcuggH23nxjTsTqeHvDxLwdxujSf9siF566b3Bo/\npQ1ldRYa1a4qszaf5JWlu3G5ctF+8tGHYNq9plPfwGW2T/J+DYtk2A8hVClRkHkjWkqSd6Ma9jJr\nSE5uMiPRqResjshtlFI8c3dNnu5Yg8Xbw3l2wU4cTpfVYf1P3AmY1hkuRED/JbZP8v46HM3AqcGU\nLuzLgpGtJMm7UVmzA2d2msGB5FirI3KrJzpU54VONVm28wxPzc9l5+6FMzD93sy18PNsn+SFHI+l\n3+QtFPbzZv7IVpLk3agad5ueCTGH4IeuZpDAxh6/szovdqrFT6FnGDN/Jxm56dx1I0n08jClFC92\nqsnjd1RjbvApXly8C2duSPYi95obRWc6DFoJ5ZpaHZFbrd4TwahZ26hZ2p+5w1tQrKA9O0i6Xf1u\n0G0KhG81jXuSYqyOyK3GdKzOc3fXYOnOMzy9IDR33DBGHzbnbkqcGeGt1NrqiNzqtwNRDJ6+lUrF\n/MwR1L8AACAASURBVJg3ohWlCskAzU2p1cVstxC5F6Z3hYSzVkfkVo+2r8bL99Zixa4Inpy3I3fc\nMP5zgMbmDc/+PhLNgKnBlPTPx4KRragQIKXWN6VaB1O1EXvM/P6cP2V1RG41un1VXr63Fit3RTB6\n1nZSM5xWh+R2kujlcWbtQA3GdKjOwm3hPL/I4hvG09thehdTzjNoFZSuZ10sOWBByCkenb2d+uUK\nM3t4C4r42XNPuBxT9yFzwxgVBtM6mTWeNvb4ndUZ27kWy0PP8OS8HaQ7LDx3I/eZC70jzQzQlLf3\nAM1PoWcYMSOE6iULMnd4S0r4ywDNf1Kzk1mnF3ccpt5jbhxtbETbqozrWodVu88yetY2a28Yb7EB\nmrX7Ihk8bSvliuRn3siWshb+v6rS3qzTS4wy5+65g1ZH5FYj2lblrQfqsi4skkHTgklIzbA6JLeS\nRM8GshabPntXDZZsP83o2RaNUhz/05Tu5POHwT9DiRo5H0MO+u73I7ywaBe3VSvOzKEtKOTrbXVI\n9lCzs1nTmXDWXHSiD1sdkVuNaleVV7vUZtXuswz9YStJaY6cDyI8xJR8eXiac7d0/ZyPIQfN3HSc\nMfN20LhiUeaOaEnRAjJAky2qtIeBy03J/tROZvDAxobeXpm3H6zHr/ujGDAlmPgUC24YI3bdUgM0\nC0NOMWrWNmqV9mf+yFayTCK7VGoFg1aYSqxpneDMDqsjcqsBrQL5olcjQo7H0WfSFmIS06wOyW0k\n0bORJzpU5837zShFjl909v0EMx8G/zLmRjGgcs69dg7TWvP+z2G8//N+ujQow5SBzSiQT/oaZavA\n28wNY0aKSfYiQq2OyK2GtanCR4804K/D0fSZvIXYpPSce/FDa+GH+0wTDZsP0Git+WLdIcYt20uH\nWiWZMaS5DNBkt/JNze+RUiYBObXV6ojcqn/LSkzo3Zgdp+Lo+d0moi6k5tyLH/vDVNB4et8SAzST\nNh7l+UW7aFWlGLOHtyRABmiyV5kGMGQNeBeA6feZ3y8be6BROb4f0JSDkQl0/24TZ/6vvfuOr6pI\n/zj+mRAghBYgtEBC7x1CFRVZBLEgKgpYsSGufW3rj11Xd92194a6i66uggVRUUFpFkSkSYBAIHRC\nQkIC6aTe+f0xV0ElECTJTQ7f9+vlS8i5uffxeOaeec7MPJN+MNAhlQsleh5z1ZDWPDehgm86K6fD\n+1dB815wzTyo37L8PzNAiop9/HnWOl75ehuXDYziuQl9qBGsZlQuInq76yk4xK372bk00BGVq0v6\nR/LKFdHEJWUybtpS9lTETSdmJsyYAI3aw7XzPf2AxuezPDhnA08v2MxFfVsy7fJ+hFSvFuiwvKlJ\nF9d2azVwszy2Lgp0ROXq3J4RvD5pALv253LRtKXsSM0p/w+N/chVOq0XAdd+6fkHNI/Oi+Ofn2/k\n7B7N+M+kaOro4Wr5aNQOrv0C6rdwe6jGfR7oiMrV8M5NeevagezLzGfcy0vZui870CGVOfVQPei8\nXhFMn9SfXftzufDlpWwvr5uOtfDVo/DpHdD+TLc2wKN7sQDkFRZz0zureXflbm4d3p6HxnavfGXx\nvSa8g7vp1GnqSoZvnBPoiMrVmV39N52sfC56aSmbk7PK78OWPu82vG41xE35qtOk/D4rwAqKfPzp\nvTW8sXQH1w1tw+Pjep40pbUDpkFrl+w1aA1vXwIx7wY6onI1tEM4M64fRE5+MeOmLWX9nozy+7AV\n/4b3J0FEHzeS5/GHq/d9uI6Xv9rKpQOjeH5iX2oG6wFNuaoX4R8h7u62X1j9ZqAjKlcD2jRkxuRB\nFBT7uHja9/y460CgQypTutN51KkdGjNz8iByC4oZ9/JSYnanl+0HFBfB53fBV/+CXpfChLc9u9E1\nQFp2Ppe+towvYpO5/9yu/Glkp8q7Sb3X1G/pOozNesC7V8D3L7qHDB41oE1D3rthMD5ruXja96zY\nUcbl6n0++PIv7p+uY+GyDzy70TVARm4hV01fzkdrErl7VCemntOl8u056lV1m8HVn0HUIJg9Gb5+\n3NNtt1dkGO9PGUzN4GpMeHUZS+JTy/YDrIXF/4LP7oSOo+CKjzz9cDU7v4jr31zJzBW7uWV4e/6p\nh6sVJ7She3jf9nT45BZY+Hd37/Co7i3q8/6UIdSpGcyEV5cxb713KgcbW4W+dKOjo+3KlSsDHUaV\nsm1fNldOX05qdj7PjO/NWd2bn/ib5mW6DXK3zIdTboMRD7r1GB61dV82V7++guTMPJ4Z35vRPcrg\nHMrxKzwIH17vRvUG3ABnPeyKh3jU7v25XDV9OQkHDvLouB5c0KcMntoX5LoO98Y50P96GP2o58/h\npNeXs2t/Lo+N61k251COX1G+6yyufRf6XA7nPuPWlXnU3ow8Jr2+nPiUbB4a252JA6JO/E1/cw6f\nhWrenb6YlHGQa95YyebkLB4c043LB7UKdEgnp+JC+OxPblSv+zgY+xIEe7dCcVp2Pte9uZI1u9P5\nyzlduXZo5V3OYIxZZa2NPubrlOh5X2p2Pte/uZIfd6Vz71mdmXJ6298/GpW+C94ZD/s2wTlPQvTV\nZRtsJfPDtjQmv7WK4CDDa1dF0zeqQaBDOrn5fDD/r/D9C9BxtNt3r4Z3N8lNzy1gyv9WsWzbfm79\nQwfuGNHh97fdzCS3Hi8pBkY+BINv8vQDmh93HeC6/66kyGd55Yp+DGrbKNAhndyshcX/hG8eh7Zn\nuE3WPTySnJVXyC0zfuSrTfuYfFpb/nxW598/kpyTCjMvg93L4Iy/wGl3ebrtxiZmcM0bK8jJL+aF\nS/swrJN3p5VXCdbCkqdh4YMQNcTN4PLwSHJeYTG3z1zDvNi9TBrSmr+e27VSjiQr0ZNfyCss5u4P\n1jInJpFLolvy0Ngex19EJGElzJjonixe8ga0G14usVYWH65O4M+z1tGyYS3emDSAqEbenZpa5fzw\nKsy7F5r1hAnvuIXjHlVQ5GPq7HW8vyqBMb0ieGxcz+MvIpK01iV5B9NdctxpdPkEW0l8vi6JO95d\nQ9N6Ibx+dX/aNa4T6JDkJ6vfgk9vh/COMHGGW8PnUUXFPv7+6Qbe/H4nI7s25ZkJvQmtcZyjcClx\n8M4lkJ0MY1+G7heWT7CVxKK4ZG5+50fq16rO9En96dLcuw8Dqpz1s2D2jW45xaXvQXj7QEdUbop9\nloc/38i/l2xnbO8InpnQJ9Ah/YYSPfkNay1PL4jnuYXxDGrbkBcv7UujOqUcgl/3AXx8kyuKcdn7\n0LhT+QYbQEXFPh6eG8d/lmxnUNuGTLu8nzZCr4w2zYVZ10H1UDc60GpwoCMqN9ZaXv56K4/N20Tf\nqDBevrwfTeuVcv+ojZ/Ch5OhVhhMnOlKaHtUsc/y1PxNvLh4K32jwnjtyujSf8dJxdm6yBUTMUFw\n8Rtu/z0Pe/277fzj0w10aV6PV67oR8sGpXxoGL8APrjaVR6eONPTe+RZa3lx8RaenL+ZbhH1+M9V\n/Uv/HScVZ9cymHmpq9Nw0WturaiH/XfpDqIahXJGJRxVVqInJZr9YwL3zlpHo9o1ePnyfvSODCv5\nxcWFMP9+WPYSRA2G8f+D2uEVF2wF259TwM3vrGbp1jQmDWnN1HO6UF3V+SqvlDiYOdFNKR79GPS/\nNtARlau565K48/0YatcM5sVL+zKgzVGmz/iKYdFDsOQpV51v4kxXHMOjMnILue1dN1VuQv9IHjy/\nm6rzVWZpW910xNRNbirxoD96ejriorhkbpu5huAgw3MT+3Bqh8Ylv9jng2+fdFNdm3ZzbTcssuKC\nrWDZ+UXc9V4M82L3cn7vCB65sCe1aqjtVlrpu1zb3bsOzpgKp94JQeonVTQlenJU6/dkMOV/q0jJ\nzOeBMd2YOCDyt2t/spLdU9ddS2HgFHcz9vAC+vV7MrjhrVXsy87nXxf0YFw/FW6oEg6mu5G9LfOh\n71Uu4avu3SfBm5OzuOGtVezan8v/nd2Fa05p/du2m5MGs66BbV+dNOfk+jdXkph+kAfGdOPSAVGq\nilsV5GfB7CkQ9yn0HA/nPu3pNbfbU3OY8tYq4lOyuGtUJ248vd1vr9ODB9w52TwPelwM5z3r6XOy\nbV82k99axfbUHO4b3Zlrh7ZR260KCnJhzm2w7j3ocp6bVlyzbqCjOqko0ZNjOpBTwG3vruGbzfu4\nJLolD47pfugp2s7vXZKXnwljnoce4wIaa3my1vK/ZTv5x2cbaVS7Bq9c0Y+eLY8yyimVj6/YPf3+\n9km3DcO4190efB6VmVfIne/FMH9DMmN6RfCvC3sc2kB4zyp490rI2QfnPAF9rwxssOXIWsv7qxL4\n28ex1AkJZtrlfenXyrtFAjzp8NGr8I5w8etuFMujcguKuHfWOubEJDKqW1Meu6gX9UP9D1D3rnP7\nlmUkwKiHYcD1nh7l/CQmkakfrqN6cBAvTOzDkPbenS3kSda67Y7m/xUatHFtt3mvQEd10lCiJ6VS\n7LM8u2Azzy3aQvsmdXj2ku50i3/FVUZr0NpN1fTwTTc9t4B7Z63li9hkhnVqzBMX9yJca3qqrk3z\n4KMbXcGgc56E3hMDHVG58fncur0nv9xEZMNQnr2kJ713v+mma9aNgPFvuimbHpWVV8jU2ev5JCaR\nwW0b8cyE3lrTU5Vt+8qtJc3LcFun9Lvas0mOtZbp3+3g4c830qRuTZ4Z34sBKe/D/L+5aoaXvAmR\nAwIdZrnJLSjigU9ieW9lAn2jwnhuYp/Sr1uUymfHEph1PeSmwpn/gIE3eLbtViZK9OS4LIlP5Yl3\n5/G3gmfoExSP7TURM/oxT5e/Xr59P3e8u4aUrDzuPasz15zSRhspe0Fmorvp7FzipoOd/YTnr+OH\nZy7g3oNPMyhoA7bL+ZjznvF0+es1u9O5dcaP7Ek/yB0jOnDjsPaVsvy1HKfsFDdtcetC6Hq+m7ZY\ny7tb2sTsTufBdxZyW84znB60Fl+HkQSd/xLUOcr6vSouNjGDW2b8yPbUHG4a1p7bR3QgWOvgq76c\nNPj4j27KccfRbiaYh6/jyqC0iZ5al4C1DM36nNlB99IpOJGbC27hirSr2Z3rzc1YcwuKeHBOLONf\n/Z7gaoYPpgzhulPbKsnzinoRcNUnbpH4uvfh5SGwZUGgoyof1jIgayEfchd9qm3jrsIbGL9/Ctty\nvFklNq+wmEfmxnHhS99R7LO8O3kQNw/voCTPK+o0gcs+gDP/DnGfwYsD3b89qlf2t8zibgZX28Rf\nCq/mwgO3sTnHm6PSBUU+np6/mfNf+I7svCLevnYgd43qpCTPK2o3ckWDznrUPah5aSCs/9BN75SA\n0ojeyW7/Nregdvs30GooduxLzNhs+OdnG/BZuGtUJyYNae2ZjtSybWnc88Fadu3P5arBrbjnrM7U\nrunNhFaA3SvctiCpm6DP5TDyn26bAS9I3w2f/Qniv4QW0dgLX2XWjpo8OCeW/CIft4/owPWntvVM\n1dhVOw9wzwcxbN2Xw/joSKae24V6Id4tDnXSS4qBj26C5HXQfZwrKFTbI5veZybB3Lth4xy3F+hF\n/2ZOYl3u/3g92flF3HRGe/44rP3x73VbSa1LyODuD2KI25vF2N4R3H9eNxrW9ubDKAFSNsJHf4TE\n1a5QyzlPuYc4UqY0dVOOrqgAfngZFj/sKmme+SD0nfRzidw96Qf5y+x1LN60j16RYTxyYY8qvXFp\nWnY+j3+xiZkrdtOqUSiPXdSTgW090mmQoyvMg28egyXPuJvNyIeg+0VVdw1BcRGs+Dcs/DtgYfhf\n3ZqIIFdIKTkzj/s/Xs8Xscl0bV6PRy7qUaWLC6XnFvD0/M28uWwnEfVr8fCFPTito6YEnRSKCmDJ\n027NeEh9N9LXa2LVLeXuK4bV/4X5D0BxPgz7Mwy++edq1mnZ+Tw4ZwOfxCTSsWkdHr6wR5UuLpSV\nV8hzC+OZ/t0OwuvU4J9jezCia9NAhyUVobgIvn8BFv8LaoS6+1S/ST/fp+TEKdGrKNZWrQ6jtbD5\nC/hyKqRtgU5nu6IV9SKO8FLLJzGJPDhnA+m5BUwYEMWfzuxYpYqVFBX7eGvZTp6av5mDBcVcM7QN\nd4zoqD16TkaJa2DOrW6kIGowjH606lUI27IQvvg/2BcH7f7gytE3aHXEl85bn8RfP44lNTufi/q2\n5O5RnapUsZJin2Xmil088cUmMg4WcvkgNwJfRyPwJ5/kWJhzOyQshxb9YPTjVW/z8O3fwhf3ucqa\nrU916w8btTviSxfFJTN19nqSMvIY0yuCe0d3pkVYrQoO+Pfz+SwfrErgsS/iSMspYHx0JPed3YX6\ntTQCf9LZtwk+uxN2fOsqYo9+HFoNDnRUx6eS9vOV6FWUz+8BWwxD/wT1WwQ6mqNLXAMLH4Sti1wZ\n61H/gg5nHvPXDuQU8OzCeN5atpPQ6tW4aXh7rhrculInSz6fZV7sXp6av5ktKdmc2iGcv53XlfZN\ntM/LSc1XDD/+z42G5aZB78vg9LtdhdnKLHmDa7ub57ky1iMfgs7nHPPmk5lXyIuLt/D6kh0EVzNM\nOb0d1wxtU6mTJWstCzem8OT8zWxMymRgm4Y8MKZblZ5RIGXA53N7ds2/H7KTocclbkSshGSp0kiN\nhwUPuL0C67V0s2dKMaMgJ7+IaV9v5dVvtgEw+bS2XHdq20qdLFlr+SY+lSe/3MTahAz6RoXxwJhu\nVXpGgZQBayF2Nnz5F8jc4wotDfs/aNI50JEdXdpW+Poxt1XTaXcFOprfUKJXEayFuffCyunuS7vf\nJJfw1Wse6Mh+ac9q+PpR10kMCYNh90H/a4978/MtKdk8/PlGFsalEF6nBted2pYrBrWqVGvcrLUs\n2JjCU/5OYvsmdbh7VCdGdm2qTVjlkIPpbjrY8tfcg5o+V7gv8votAx3ZL+1d5240Gz+BmvVcjAOn\nQPDxjarvTMvhkblxzF2/l7DQ6lw3tA1XDmldqda4WWv5evM+np6/mZiEDFo1CuWukZ04t2dztV05\nJD/L7bu3bBoUF7ipnJXxYU3KRvjmCVg/C6qHwql3uGma1Y9vZC7hQC6PzI3j07VJ1A0J5upT2nDt\nKW0O7b1XCVhrWbo1jafmb2bVzgO0CKvFnSM7MrZ3CxU5k0MKcuC759yUzoIc6HExnH4vhLcPdGS/\nlLbV9Q/Wvuf6yafeCaffE+iofkOJXkU6sBO+fQLWvAOmmttcfOAUaN4zcDH5fLBlPvzwiquAFBLm\nbjIDJ7u1Didg+fb9PL8onm/jUwkLrc6Vg1px6cBWNKsfuGlheYXFfLh6D69/t534lGxaNwrlthEd\nGNOrhWcKyUg5yEyEb59y62ashW4XuLYbyGlhPh9sW+yS0M1zXYI3cAoMuvGEt0xYszud5xfGszAu\nhXohwVw2qBWXDYwK6B5WeYXFfBKTyOvf7WBjUiYtG9Ti1uEduKBvC88UkpFykJ3i1u+t+A/4ilzR\nh0E3QuTAwE2zstbtKbb8Fdj4qUvwBlzv7r0nWGp+/Z4MXli0hXmxe6lTM5iJAyK5fFArWjWqXUbB\nH7+CIh+fr0vi9e+2E5OQQbN6Idw8vD2XREd6ppCMlIOcNFj6LPzwKhTlQafR7h7X5rTAtt1dy2D5\nq7DhI6hWE6KvgVNuhbrNAhPTMSjRC4T922Hp8xAzAwpz3Tqg3pdB1zEnnFyVWvpuWP8BrHoDDuyA\nOs1cctf/+jLfS+zHXQd4YdEWFm1KIcgYzuzSlPEDIhnaPrxCOmjWWtbtyeDD1Xv4eM0eDuQW0rV5\nPa4d2oYxvSPUSZTSS98N37/opnUWZEGLaOhzGXQdW3H70WUmunLUK6fD/q0QGg79r4NBU8p8L7Gf\nOo1fbtgLwPDOTRnfP5LTOoZTM7hipmRvSMxk9o8JfLh6D2k5BXRqWpdrhrbmgj4t1UmU0stMhB+m\nuXteXoZbd9v7cjc9sqKqdGanuLa76nW3frZWA4i+FgbfVObfH3F7M3lx8Vbmrkui2FpO79iY8dGR\nnNG5CSHVK6btxidnMfvHPby/KoF9Wfm0Da/N1ae05uLoyAqLQTwgKxlWvObueblp0KQb9L3Ctd2K\nqtKZk+oSu1VvuBk0IfWh75Uw5NZKXym0Uid6xpiLgQeALsAAa22psrdKn+j95GC66zD+1GGrVhM6\njnKFT9oNh7plWHXKWrcGYOtCiP0Idi9zP48a4p4kdjnvuKdoHq9dabm8vXwn763YzYHcQsJCq3NW\nt2aM6taMAW0alunUzmKfZc3uAyyO28e82L1sScmmRrUgRnRtwpWDWzOwTUNN85LfLy/TjcyvnO62\nZAiqDh1GQqezoP2IIxYt+t2sddubbF3k2u7O7wALLfu7BzPdxh73FM3jtSf9IDN+2MXMFbtIzS6g\nbkgwo/xtd2DbhmU6tdPns6zdk8HiuBS+iN1L3N4sgoMMwzs3YdKQ1gxu10htV36/ghz3kHXlG25L\nhqBgV7Co01nQ/kwIiyzbzzuw41Db3fEtWB9E9HFtt/uFxz1F83glZ+bxzg+7mLF8FylZ+dSpGczI\nrk0Z2a0pg9uFl+laPp/PEpuYyVebUpgXu5fYxEyqBRlO6xDOVUNac1qHxpqiKb9f4UFY94FL+pJi\nwARB22FuHXr7EWU/LTt9t2u7Gz+BrYvd8o2m3V2fucfFUCNwo+THo7Inel0AH/AKcJfnEr2fWOvW\nx6191z0xyE52P2/aAyIHuJtCRG9o2M6Vny2NvAxXgSxpLSStcZW8MhPcsSZd3ZOQ7hdBwzbl8990\nFPlFxXy7OZVP1yYyf0MyOQXFBAcZ+kSF0b91Q7o0r0eX5vVoE167VNMpfT5LSlY+8SlZxOxOZ83u\ndFbuPEB6biFBBqJbNeT8PhGc2yOiUq1XEA+wFvaudXP0Y2e7BeTgnjhG9oeIvofabs06pXvPvExI\n2eBvuzFu78qMXe5YeEe3V1j3C93C7wpWWOxjyZZUPo1J4svYvWTlF1EtyNCrZX36t2lI1+b16BZR\nj9aNapdqg2NrLfuy8olPyWbN7nTWJqSzYscB9ucUYAz0jWrA2N4RnNMzQvtpSdlLjoWYmS4J+6mN\nNe7sHqK06OfuvQ3bln6WS362a7t717qiZju+dYkeuO+A7he5ttukS7n85xxNUbGPZdv2Mycmkbnr\nk8jMKyLIQM+WYUS3akC3FvXoFlGfNuG1SzXLxVpLanYB8clZxCRk+NvuflKzCwDoFRnG2N4RnNsz\ngsZ1q04FbqkiUuJc0aX1sw61sUbtIWqQv8/cBxp1KH3bLchx77k3xt13d3wHafHuWFiUv+2Og6bd\nKmVlzaOp1Inezx9uzFd4OdE7nM8HyethywLY9hUk/gj5mYeOh4a7J44hYe5pQvVQt+6gKM9NA81K\ndp3Nw3+ndhN38bcbDu3OqFSL0fMKi1m54wDfbU1l6ZZUYhMzKfK5a61akKFJ3Zo0rRdCw9o1qFEt\niBrBQVhcpbHsvCLScvLZfeAgBUW+n9+zXePa9IlqwOkdG3Nah8ZK7qRiWOs6efHz/W13tXvg8pPQ\nRu6GEVIfatQ5rO3mu7abnQwZeyD/V78TNdg9tWw33HU6K8lNJr+omNU70/luSypLtqQSm5hBYbFr\nu0EGmtQNoVn9EBqEVqdGcBA1g6sdarv5RezPKSDhQC55hYfabpvw2vSJDOP0To05tUNjJXdSMayF\n1M0Q/6Vru3tWw8H9h47Xaui/79aHGnXdA1dfkdu/r+jgoftuXvqh3wkJg1ZDXNttO8w9pKkkbbew\n2Mea3el8G5/Kkvh9rE/M/Pkeagw0rlOT5mG1aBBanZDgatSsHoTPQm5+ETkFRaRm/7btRjUMpU9U\nmLvvdmxcpbZXkirMWlcUZcsCN2Ntzyo3vfMnIWHuvhvaEKrXdm3X+ty+uUUHIXufGwQ5eOCXv9Oy\n/6E+c+POlabt/h6eSfSMMZOByQBRUVH9du7cWUHRlTOfz03bSloD6TshfZcbTs7Pck8gCnPc1JPg\nWlA9xCV19Vu6LRwad3brECrpAtEjyS8qJj45m41JmexIy2FvRj7JmXkcyC2gsNj3c0eyTs1gates\nRoPQGkQ1DCWyYShtwmvTo2X9SlUhUE5iP025TIpxTxzTd0GGv+3mZ/vbbnUIDnFTL+s0de22XgQ0\n7uKKNNVtXmVuMAVFPrbuyyY2MZNdaTkkZeSx1992C4p8P3ck64QEU7tGMA1CaxDZsNahttuiPmGh\nSuykErDWtdm9a92a+vSd/vtupmu7BdluqcPPbbeZq6L9U9tt1sPdh6tI2y0s9rFtXw6xiRnsTMsl\nKeMgSRl5ZB4sJK/QR35RMQC1awZTu2YwDUKrE9kglJYNatGmcR16tqhPAz2UkcrAWnefTVwDB7b7\n+8y73FKpwlzXbzZBbsp0cAjUDod6Ldy9t1EH12cOi6oybbc0Ap7oGWMWAEfKRKZaaz/2v+YrTpYR\nPRERERERkRNU2kSv3DZAs9aOKK/3FhERERERkZKphrWIiIiIiIjHBCTRM8ZcYIxJAAYDnxljvghE\nHCIiIiIiIl5UblM3j8ZaOxuYHYjPFhERERER8TpN3RQREREREfEYJXoiIiIiIiIeo0RPRERERETE\nY5ToiYiIiIiIeIwSPREREREREY9RoiciIiIiIuIxSvREREREREQ8RomeiIiIiIiIxyjRExERERER\n8RgleiIiIiIiIh6jRE9ERERERMRjlOiJiIiIiIh4jBI9ERERERERj1GiJyIiIiIi4jFK9ERERERE\nRDxGiZ6IiIiIiIjHKNETERERERHxGCV6IiIiIiIiHqNET0RERERExGOU6ImIiIiIiHiMEj0RERER\nERGPUaInIiIiIiLiMUr0REREREREPEaJnoiIiIiIiMco0RMREREREfEYJXoiIiIiIiIeo0RPRERE\nRETEY5ToiYiIiIiIeIwSPREREREREY8JSKJnjHncGBNnjFlrjJltjAkLRBwiIiIiIiJeFKgRr+70\nrQAACTJJREFUvflAd2ttT2AzcF+A4hAREREREfGcgCR61tovrbVF/r8uA1oGIg4REREREREvqgxr\n9K4B5pZ00Bgz2Riz0hizct++fRUYloiIiIiISNUUXF5vbIxZADQ7wqGp1tqP/a+ZChQBb5f0Ptba\nV4FXAaKjo205hCoiIiIiIuIp5ZboWWtHHO24MWYScC7wB2utEjgREREREZEyUm6J3tEYY84C7gFO\nt9bmBiIGERERERERrwrUGr0XgLrAfGPMGmPMtADFISIiIiIi4jkBGdGz1rYPxOeKiIiIiIicDCpD\n1U0REREREREpQ0r0REREREREPEaJnoiIiIiIiMco0RMREREREfEYJXoiIiIiIiIeo0RPRERERETE\nY5ToiYiIiIiIeIwSPREREREREY9RoiciIiIiIuIxSvREREREREQ8RomeiIiIiIiIxyjRExERERER\n8RgleiIiIiIiIh6jRE9ERERERMRjlOiJiIiIiIh4jBI9ERERERERj1GiJyIiIiIi4jFK9ERERERE\nRDxGiZ6IiIiIiIjHKNETERERERHxGCV6IiIiIiIiHqNET0RERERExGOU6ImIiIiIiHiMEj0RERER\nERGPUaInIiIiIiLiMUr0REREREREPEaJnoiIiIiIiMcYa22gYyg1Y8w+YGeg4ziCcCA10EGcpHTu\nA0fnPnB07gNH5z6wdP4DR+c+cHTuA6eynvtW1trGx3pRlUr0KitjzEprbXSg4zgZ6dwHjs594Ojc\nB47OfWDp/AeOzn3g6NwHTlU/95q6KSIiIiIi4jFK9ERERERERDxGiV7ZeDXQAZzEdO4DR+c+cHTu\nA0fnPrB0/gNH5z5wdO4Dp0qfe63RExERERER8RiN6ImIiIiIiHiMEj0RERERERGPUaJXSsaYi40x\nscYYnzEm+lfH7jPGbDHGbDLGjCrh9xsaY+YbY+L9/25QMZF7izHmXWPMGv8/O4wxa0p43Q5jzDr/\n61ZWdJxeZIx5wBiz57Dzf3YJrzvL3xa2GGP+XNFxepEx5nFjTJwxZq0xZrYxJqyE1+m6LyPHuo6N\n85z/+FpjTN9AxOk1xphIY8xiY8wG/z33tiO8ZpgxJuOw76L7AxGrFx3rO0TXffkxxnQ67JpeY4zJ\nNMbc/qvX6NovI8aY6caYFGPM+sN+Vqq+elXq52iNXikZY7oAPuAV4C5r7Ur/z7sCM4ABQASwAOho\nrS3+1e8/Buy31j7ivygaWGvvrcj/Bq8xxjwJZFhr/36EYzuAaGttZdzkskoyxjwAZFtrnzjKa6oB\nm4EzgQRgBTDRWruhQoL0KGPMSGCRtbbIGPMowJG+P3Tdl43SXMf+Bx23AGcDA4FnrbUDAxCupxhj\nmgPNrbWrjTF1gVXA2F+d+2G4+/C5AQrTs471HaLrvmL4v4P2AAOttTsP+/kwdO2XCWPMaUA28Ka1\ntrv/Z8fsq1e1fo5G9ErJWrvRWrvpCIfOB2Zaa/OttduBLbik70iv+6//z/8FxpZPpCcHY4wBLsEl\n2VJ5DAC2WGu3WWsLgJm4a19OgLX2S2ttkf+vy4CWgYznJFCa6/h8XAfBWmuXAWH+JEVOgLU2yVq7\n2v/nLGAj0CKwUclhdN1XjD8AWw9P8qRsWWu/Afb/6sel6atXqX6OEr0T1wLYfdjfEzjyTamptTbJ\n/+e9QNPyDszjTgWSrbXxJRy3wAJjzCpjzOQKjMvrbvFP15lewpSG0rYH+f2uAeaWcEzXfdkozXWs\na72cGWNaA32AH45weIj/u2iuMaZbhQbmbcf6DtF1XzEmUPKDbF375ac0ffUq1QaCAx1AZWKMWQA0\nO8Khqdbaj8vqc6y11hijObMlKOX/h4kcfTRvqLV2jzGmCTDfGBPnf3ojR3G0cw+8DPwD1xH4B/Ak\nLumQMlCa694YMxUoAt4u4W103YsnGGPqALOA2621mb86vBqIstZm+6cSfgR0qOgYPUrfIQFmjKkB\njAHuO8JhXfsVxCt9dSV6h7HWjvgdv7YHiDzs7y39P/u1ZGNMc2ttkn+aQ8rvifFkcKz/D8aYYOBC\noN9R3mOP/98pxpjZuKF23ayOobRtwBjzGvDpEQ6Vtj3Ir5Tiup8EnAv8wZawuFrXfZkpzXWsa72c\nGGOq45K8t621H/76+OGJn7X2c2PMS8aYcK1NPXGl+A7RdV/+RgOrrbXJvz6ga7/claavXqXagKZu\nnrhPgAnGmJrGmDa4JyvLS3jdVf4/XwWU2QjhSWgEEGetTTjSQWNMbf8ifowxtYGRwPojvVZK71fr\nMC7gyOd0BdDBGNPG/1RyAu7alxNgjDkLuAcYY63NLeE1uu7LTmmu40+AK/1VCAfhCkMl/fqN5Pj4\n11//B9horX2qhNc0878OY8wAXF8mreKi9KZSfofoui9/Jc5Y0rVf7krTV69S/RyN6JWSMeYC4Hmg\nMfCZMWaNtXaUtTbWGPMesAE3peqmnypuGmP+DUzzV+h8BHjPGHMtsBNXSER+n9/MXTfGRAD/ttae\njZtTPdv/XRgMvGOtnVfhUXrPY8aY3ripmzuAG+CX595fFfJm4AugGjDdWhsbqIA95AWgJm4qFcAy\na+0UXfflo6Tr2BgzxX98GvA5rvLgFiAXuDpQ8XrMKcAVwDpzaPuc/wOi4OdzPw640RhTBBwEJpQ0\nyi3H5YjfIbruK44/wT4T//3V/7PDz7+u/TJijJkBDAPCjTEJwN8ooa9elfs52l5BRERERETEYzR1\nU0RERERExGOU6ImIiIiIiHiMEj0RERERERGPUaInIiIiIiLiMUr0REREREREPEaJnoiIiIiIiMco\n0RMREREREfEYJXoiIiLHYIzpb4xZa4wJMcbUNsbEGmO6BzouERGRkmjDdBERkVIwxjwEhAC1gARr\n7cMBDklERKRESvRERERKwRhTA1gB5AFDrLXFAQ5JRESkRJq6KSIiUjqNgDpAXdzInoiISKWlET0R\nEZFSMMZ8AswE2gDNrbU3BzgkERGREgUHOgAREZHKzhhzJVBorX3HGFMNWGqMGW6tXRTo2ERERI5E\nI3oiIiIiIiIeozV6IiIiIiIiHqNET0RERERExGOU6ImIiIiIiHiMEj0RERERERGPUaInIiIiIiLi\nMUr0REREREREPEaJnoiIiIiIiMf8PzgiYYHBrfF8AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f8d41d390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(15, 4))\n",
"\n",
"plt.plot(x_arr, sinx_arr)\n",
"plt.plot(x_arr, cosx_arr)\n",
"\n",
"plt.title('sin(x) and cos(x)')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"\n",
"plt.axis('equal')\n",
"plt.legend(['sin(x)', 'cos(x)'])"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Если нам нужно изменить шкалу осей, можно использовать функции xticks(), yticks()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f3f802067b8>"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\niIiISMio0BMREREREQkZFXoiIiIiIiIho0JPREREREQkZFToiYiIiIiIhIwKPRERERERkZBR3i8N\n3QAADC1JREFUoSciIiIiIhIyKvRERERERERCJpBCz8zuM7MlZjbfzCaZWWIQOURERERERMIoqBG9\nqUAP51wvYBlwW0A5REREREREQieQQs8596FzriT66QygVRA5REREREREwigW1uhdCrz/U180syvN\nbLaZzd6yZUslxhIREREREama4ivqB5vZR8Ahe/nSOOfcW9HvGQeUAC/+1M9xzj0DPAMwYMAAVwFR\nRUREREREQqXCCj3n3HH7+rqZjQFOBY51zqmAExEREREROUAqrNDbFzM7CfgdcJRzLj+IDCIiIiIi\nImEV1Bq9x4B6wFQzm2dmTwWUQ0REREREJHQCGdFzznUI4veKiIiIiIgcDGJh100RERERERE5gFTo\niYiIiIiIhIwKPRERERERkZBRoSciIiIiIhIyKvRERERERERCRoWeiIiIiIhIyKjQExERERERCRkV\neiIiIiIiIiGjQk9ERERERCRkVOiJiIiIiIiEjAo9ERERERGRkFGhJyIiIiIiEjIq9EREREREREJG\nhZ6IiIiIiEjIqNATEREREREJGRV6IiIiIiIiIaNCT0REREREJGRU6ImIiIiIiISMCj0REREREZGQ\nUaEnIiIiIiISMir0REREREREQkaFnoiIiIiISMio0BMREREREQkZFXoiIiIiIiIho0JPREREREQk\nZFToiYiIiIiIhIwKPRERERERkZAx51zQGcrMzLYAa4POsRdNgMygQ+yFcpWPcpWPcpWPcpWPcpVP\nrOaC2M2mXOWjXOWjXOWjXOXTxjnXdH/fVKUKvVhlZrOdcwOCzvFDylU+ylU+ylU+ylU+ylU+sZoL\nYjebcpWPcpWPcpWPclUMTd0UEREREREJGRV6IiIiIiIiIaNC78B4JugAP0G5yke5yke5yke5yke5\nyidWc0HsZlOu8lGu8lGu8lGuCqA1eiIiIiIiIiGjET0REREREZGQUaEnIiIiIiISMir0fgEzO9vM\nUs0sYmYDfvC128xshZktNbMTA8zY28y+NrMFZjbZzOoHlWVPZtbHzGaY2Twzm21mg4LOBGBmr0Qz\nzTOzNWY2L+hMu5jZtWa2JPqeuzfoPABmdruZbdzjNftV0Jn2ZGY3mZkzsyZBZwEws7+Z2fzoa/Wh\n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\nexk4GmhiZhuAv0R7yIN2GHAhsMB2H1PzhxjYmbcF8N/oLqpxwKvOuZg5yiAGNcdPbwX/zPiSc25K\nsJG+cy3wYrTjZRVwScB5gO8K4uOJofthdHrr68Bc/HPpt8Azwab6zkQzawwU45+XA9tUZ2/XU+Bu\n/HKZy/D37XOCyvdzWGw8K4qIiIiIiMiBoqmbIiIiIiIiIaNCT0REREREJGRU6ImIiIiIiISMCj0R\nEREREZGQUaEnIiIiIiISMir0REREREREQkaFnoiIiIiISMio0BMREdkPMxtoZvPNrJaZ1TGzVDPr\nEXQuERGRn6ID00VERMrAzO4EagG1gQ3OubsCjiQiIvKTVOiJiIiUgZnVAGYBBcAw51xpwJFERER+\nkqZuioiIlE1joC5QDz+yJyIiErM0oiciIlIGZvY2MAFoB7Rwzl0TcCQREZGfFB90ABERkVhnZhcB\nxc65l8ysGjDdzIY75z4OOpuIiMjeaERPREREREQkZLRGT0REREREJGRU6ImIiIiIiISMCj0RERER\nEZGQUaEnIiIiIiISMir0REREREREQkaFnoiIiIiISMio0BMREREREQmZ/wdGyt1i4hs4kAAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f803d0668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(15, 4))\n",
"\n",
"plt.plot(x_arr, sinx_arr)\n",
"plt.plot(x_arr, cosx_arr)\n",
"\n",
"plt.xticks(np.arange(-10, 11, 1))\n",
"\n",
"plt.title('sin(x) and cos(x)')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"\n",
"plt.axis('equal')\n",
"plt.legend(['sin(x)', 'cos(x)'])"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Рассмотрим другой пример"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"x = np.linspace(1, 10, 20)\n",
"y = x ** 3"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"matplotlib позволяет строить непрерывные линии:"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f3f8018ab38>]"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nf2LmSkFUJJeJAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f804b1630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y, c='red')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Еще matplotlib позволяет строить непрерывные линии:"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f3f804f62e8>"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3f80139fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(x, y, c='blue')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"и даже всё вместе:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'plt' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-44-364aa4660d15>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'b+-'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'plt' is not defined"
]
}
],
"source": [
"plt.plot(x, y, 'b+-')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## На словах о SciPy"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Вопросы?"
]
}
],
"metadata": {
"anaconda-cloud": {},
"celltoolbar": "Slideshow",
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment