diff --git a/Lesson4/Task2.ipynb b/Lesson4/Task2.ipynb
new file mode 100644
index 0000000..ac6e6bf
--- /dev/null
+++ b/Lesson4/Task2.ipynb
@@ -0,0 +1,6815 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "b27e41e4",
+ "metadata": {},
+ "source": [
+ "## Тема “Визуализация данных в Matplotlib”"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f324024b",
+ "metadata": {},
+ "source": [
+ "### Задание 1\n",
+ "Загрузите модуль pyplot библиотеки matplotlib с псевдонимом plt, а также библиотеку numpy с\n",
+ "псевдонимом np.\n",
+ "Примените магическую функцию %matplotlib inline для отображения графиков в Jupyter Notebook и\n",
+ "настройки конфигурации ноутбука со значением 'svg' для более четкого отображения графиков.\n",
+ "Создайте список под названием x с числами 1, 2, 3, 4, 5, 6, 7 и список y с числами 3.5, 3.8, 4.2, 4.5, 5,\n",
+ "5.5, 7.\n",
+ "С помощью функции plot постройте график, соединяющий линиями точки с горизонтальными\n",
+ "координатами из списка x и вертикальными - из списка y.\n",
+ "Затем в следующей ячейке постройте диаграмму рассеяния (другие названия - диаграмма разброса,\n",
+ "scatter plot)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "99e11a55",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from random import seed\n",
+ "from matplotlib import pyplot as plt\n",
+ "\n",
+ "plt.style.use('fivethirtyeight')\n",
+ "\n",
+ "%matplotlib inline\n",
+ "%config InlineBackend.figure_format = 'svg'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "bd0d7835",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "x = [1, 2, 3, 4, 5, 6, 7]\n",
+ "y = [3.5, 3.8, 4.2, 4.5, 5, 5.5, 7]\n",
+ "\n",
+ "plt.plot(x, y)\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "91fc998c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.scatter(x, y)\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fbf3b995",
+ "metadata": {},
+ "source": [
+ "### Задание 2\n",
+ "С помощью функции linspace из библиотеки Numpy создайте массив t из 51 числа от 0 до 10\n",
+ "включительно.\n",
+ "© geekbrains.ru\n",
+ "Создайте массив Numpy под названием f, содержащий косинусы элементов массива t.\n",
+ "Постройте линейную диаграмму, используя массив t для координат по горизонтали,а массив f - для\n",
+ "координат по вертикали. Линия графика должна быть зеленого цвета.\n",
+ "Выведите название диаграммы - 'График f(t)'. Также добавьте названия для горизонтальной оси -\n",
+ "'Значения t' и для вертикальной - 'Значения f'.\n",
+ "Ограничьте график по оси x значениями 0.5 и 9.5, а по оси y - значениями -2.5 и 2.5."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "f19e1fe4",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "t = np.linspace(0, 10, 51)\n",
+ "\n",
+ "f = np.cos(t)\n",
+ "\n",
+ "plt.plot(t, f, color=\"green\")\n",
+ "\n",
+ "plt.title(\"График f(t)\")\n",
+ "plt.xlabel(\"Значения t\")\n",
+ "plt.ylabel(\"Значения f\")\n",
+ "\n",
+ "plt.axis([0.5, 9.5, -2.5, 2.5])\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "73611d04",
+ "metadata": {},
+ "source": [
+ "### Задание 3\n",
+ "С помощью функции linspace библиотеки Numpy создайте массив x из 51 числа от -3 до 3\n",
+ "включительно.\n",
+ "Создайте массивы y1, y2, y3, y4 по следующим формулам:\n",
+ "y1 = x**2\n",
+ "y2 = 2 * x + 0.5\n",
+ "y3 = -3 * x - 1.5\n",
+ "y4 = sin(x)\n",
+ "Используя функцию subplots модуля matplotlib.pyplot, создайте объект matplotlib.figure.Figure с\n",
+ "названием fig и массив объектов Axes под названием ax,причем так, чтобы у вас было 4 отдельных\n",
+ "графика в сетке, состоящей из двух строк и двух столбцов. В каждом графике массив x используется\n",
+ "для координат по горизонтали.В левом верхнем графике для координат по вертикали используйте\n",
+ "y1,в правом верхнем - y2, в левом нижнем - y3, в правом нижнем - y4.Дайте название графикам:\n",
+ "'График y1', 'График y2' и т.д.\n",
+ "Для графика в левом верхнем углу установите границы по оси x от -5 до 5.\n",
+ "Установите размеры фигуры 8 дюймов по горизонтали и 6 дюймов по вертикали.\n",
+ "Вертикальные и горизонтальные зазоры между графиками должны составлять 0.3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "ea585c38",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'График y4')"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "x = np.linspace(-3, 3, 51)\n",
+ "\n",
+ "y1 = x**2\n",
+ "y2 = 2*x + 0.5\n",
+ "y3 = -3*x - 1.5\n",
+ "y4 = np.sin(x)\n",
+ "\n",
+ "fig, ax = plt.subplots(nrows=2, ncols=2)\n",
+ "\n",
+ "fig.set_size_inches(8, 6)\n",
+ "fig.subplots_adjust(wspace=0.3, hspace=0.3)\n",
+ "\n",
+ "ax1, ax2, ax3, ax4 = ax.flatten()\n",
+ "\n",
+ "ax1.plot(x, y1)\n",
+ "ax1.set_title(\"График y1\")\n",
+ "ax1.set_xlim([-5, 5])\n",
+ "ax2.plot(x, y2)\n",
+ "ax2.set_title(\"График y2\")\n",
+ "ax3.plot(x, y3)\n",
+ "ax3.set_title(\"График y3\")\n",
+ "ax4.plot(x, y4)\n",
+ "ax4.set_title(\"График y4\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c77b9177",
+ "metadata": {},
+ "source": [
+ "### Задание 4\n",
+ "В этом задании мы будем работать с датасетом, в котором приведены данные по мошенничеству с\n",
+ "кредитными данными: Credit Card Fraud Detection (информация об авторах: Andrea Dal Pozzolo, Olivier\n",
+ "Caelen, Reid A. Johnson and Gianluca Bontempi. Calibrating Probability with Undersampling for Unbalanced\n",
+ "Classification. In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015).\n",
+ "Ознакомьтесь с описанием и скачайте датасет creditcard.csv с сайта Kaggle.com по ссылке:\n",
+ "Credit Card Fraud Detection\n",
+ "Данный датасет является примером несбалансированных данных, так как мошеннические операции с\n",
+ "картами встречаются реже обычных.\n",
+ "Импортируйте библиотеку Pandas, а также используйте для графиков стиль “fivethirtyeight”.\n",
+ "© geekbrains.ru 1\n",
+ "Посчитайте с помощью метода value_counts количество наблюдений для каждого значения целевой\n",
+ "переменной Class и примените к полученным данным метод plot, чтобы построить столбчатую\n",
+ "диаграмму. Затем постройте такую же диаграмму, используя логарифмический масштаб.\n",
+ "На следующем графике постройте две гистограммы по значениям признака V1 - одну для\n",
+ "мошеннических транзакций (Class равен 1) и другую - для обычных (Class равен 0). Подберите\n",
+ "значение аргумента density так, чтобы по вертикали графика было расположено не число\n",
+ "наблюдений, а плотность распределения. Число бинов должно равняться 20 для обеих гистограмм, а\n",
+ "коэффициент alpha сделайте равным 0.5, чтобы гистограммы были полупрозрачными и не\n",
+ "загораживали друг друга. Создайте легенду с двумя значениями: “Class 0” и “Class 1”. Гистограмма\n",
+ "обычных транзакций должна быть серого цвета, а мошеннических - красного. Горизонтальной оси\n",
+ "дайте название “V1”."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "65f2dc4a-f788-4f45-b8d7-7bd6de270815",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Dataset URL: https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud\n",
+ "License(s): DbCL-1.0\n",
+ "Downloading creditcardfraud.zip to W:\\Projects\\GB\\Python\\MLearning\\DSLibraries\\Lesson4\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " 0%| | 0.00/66.0M [00:00, ?B/s]\n",
+ " 2%|1 | 1.00M/66.0M [00:01<01:11, 955kB/s]\n",
+ " 3%|3 | 2.00M/66.0M [00:01<00:34, 1.95MB/s]\n",
+ " 6%|6 | 4.00M/66.0M [00:01<00:16, 4.00MB/s]\n",
+ " 8%|7 | 5.00M/66.0M [00:01<00:12, 4.92MB/s]\n",
+ " 11%|# | 7.00M/66.0M [00:01<00:09, 6.58MB/s]\n",
+ " 14%|#3 | 9.00M/66.0M [00:01<00:07, 7.72MB/s]\n",
+ " 17%|#6 | 11.0M/66.0M [00:02<00:06, 8.71MB/s]\n",
+ " 18%|#8 | 12.0M/66.0M [00:02<00:06, 8.63MB/s]\n",
+ " 20%|#9 | 13.0M/66.0M [00:02<00:06, 8.95MB/s]\n",
+ " 21%|##1 | 14.0M/66.0M [00:02<00:05, 9.23MB/s]\n",
+ " 23%|##2 | 15.0M/66.0M [00:02<00:05, 9.50MB/s]\n",
+ " 26%|##5 | 17.0M/66.0M [00:02<00:05, 10.1MB/s]\n",
+ " 29%|##8 | 19.0M/66.0M [00:02<00:04, 10.3MB/s]\n",
+ " 32%|###1 | 21.0M/66.0M [00:03<00:04, 10.6MB/s]\n",
+ " 35%|###4 | 23.0M/66.0M [00:03<00:04, 10.6MB/s]\n",
+ " 38%|###7 | 25.0M/66.0M [00:03<00:04, 10.5MB/s]\n",
+ " 41%|#### | 27.0M/66.0M [00:03<00:03, 10.4MB/s]\n",
+ " 42%|####2 | 28.0M/66.0M [00:03<00:03, 10.2MB/s]\n",
+ " 44%|####3 | 29.0M/66.0M [00:03<00:03, 9.96MB/s]\n",
+ " 45%|####5 | 30.0M/66.0M [00:04<00:03, 9.74MB/s]\n",
+ " 47%|####7 | 31.0M/66.0M [00:04<00:06, 5.26MB/s]\n",
+ " 50%|##### | 33.0M/66.0M [00:04<00:05, 6.62MB/s]\n",
+ " 53%|#####3 | 35.0M/66.0M [00:05<00:04, 6.98MB/s]\n",
+ " 55%|#####4 | 36.0M/66.0M [00:05<00:04, 6.46MB/s]\n",
+ " 56%|#####6 | 37.0M/66.0M [00:05<00:05, 5.60MB/s]\n",
+ " 58%|#####7 | 38.0M/66.0M [00:05<00:06, 4.70MB/s]\n",
+ " 59%|#####9 | 39.0M/66.0M [00:06<00:06, 4.45MB/s]\n",
+ " 61%|###### | 40.0M/66.0M [00:06<00:06, 4.40MB/s]\n",
+ " 62%|######2 | 41.0M/66.0M [00:06<00:06, 4.28MB/s]\n",
+ " 64%|######3 | 42.0M/66.0M [00:06<00:05, 4.48MB/s]\n",
+ " 67%|######6 | 44.0M/66.0M [00:07<00:03, 6.07MB/s]\n",
+ " 70%|######9 | 46.0M/66.0M [00:07<00:02, 7.38MB/s]\n",
+ " 71%|#######1 | 47.0M/66.0M [00:07<00:02, 6.83MB/s]\n",
+ " 73%|#######2 | 48.0M/66.0M [00:07<00:02, 6.84MB/s]\n",
+ " 74%|#######4 | 49.0M/66.0M [00:07<00:02, 7.48MB/s]\n",
+ " 76%|#######5 | 50.0M/66.0M [00:07<00:02, 7.19MB/s]\n",
+ " 77%|#######7 | 51.0M/66.0M [00:08<00:02, 6.45MB/s]\n",
+ " 79%|#######8 | 52.0M/66.0M [00:08<00:02, 6.05MB/s]\n",
+ " 80%|######## | 53.0M/66.0M [00:08<00:02, 5.69MB/s]\n",
+ " 82%|########1 | 54.0M/66.0M [00:08<00:01, 6.42MB/s]\n",
+ " 83%|########3 | 55.0M/66.0M [00:08<00:01, 6.54MB/s]\n",
+ " 85%|########4 | 56.0M/66.0M [00:08<00:01, 6.36MB/s]\n",
+ " 86%|########6 | 57.0M/66.0M [00:09<00:01, 6.58MB/s]\n",
+ " 88%|########7 | 58.0M/66.0M [00:09<00:02, 3.98MB/s]\n",
+ " 91%|######### | 60.0M/66.0M [00:09<00:01, 5.61MB/s]\n",
+ " 94%|#########4| 62.0M/66.0M [00:09<00:00, 6.99MB/s]\n",
+ " 96%|#########5| 63.0M/66.0M [00:10<00:00, 7.53MB/s]\n",
+ " 99%|#########8| 65.0M/66.0M [00:10<00:00, 8.33MB/s]\n",
+ "100%|##########| 66.0M/66.0M [00:10<00:00, 6.69MB/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "!kaggle datasets download -d mlg-ulb/creditcardfraud"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "92334a51",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from zipfile import ZipFile\n",
+ "\n",
+ "ZipFile(\"creditcardfraud.zip\").extractall(\".\")\n",
+ "\n",
+ "df = pd.read_csv(\"creditcard.csv\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "1bc2421d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Time | \n",
+ " V1 | \n",
+ " V2 | \n",
+ " V3 | \n",
+ " V4 | \n",
+ " V5 | \n",
+ " V6 | \n",
+ " V7 | \n",
+ " V8 | \n",
+ " V9 | \n",
+ " ... | \n",
+ " V21 | \n",
+ " V22 | \n",
+ " V23 | \n",
+ " V24 | \n",
+ " V25 | \n",
+ " V26 | \n",
+ " V27 | \n",
+ " V28 | \n",
+ " Amount | \n",
+ " Class | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.0 | \n",
+ " -1.359807 | \n",
+ " -0.072781 | \n",
+ " 2.536347 | \n",
+ " 1.378155 | \n",
+ " -0.338321 | \n",
+ " 0.462388 | \n",
+ " 0.239599 | \n",
+ " 0.098698 | \n",
+ " 0.363787 | \n",
+ " ... | \n",
+ " -0.018307 | \n",
+ " 0.277838 | \n",
+ " -0.110474 | \n",
+ " 0.066928 | \n",
+ " 0.128539 | \n",
+ " -0.189115 | \n",
+ " 0.133558 | \n",
+ " -0.021053 | \n",
+ " 149.62 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.0 | \n",
+ " 1.191857 | \n",
+ " 0.266151 | \n",
+ " 0.166480 | \n",
+ " 0.448154 | \n",
+ " 0.060018 | \n",
+ " -0.082361 | \n",
+ " -0.078803 | \n",
+ " 0.085102 | \n",
+ " -0.255425 | \n",
+ " ... | \n",
+ " -0.225775 | \n",
+ " -0.638672 | \n",
+ " 0.101288 | \n",
+ " -0.339846 | \n",
+ " 0.167170 | \n",
+ " 0.125895 | \n",
+ " -0.008983 | \n",
+ " 0.014724 | \n",
+ " 2.69 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1.0 | \n",
+ " -1.358354 | \n",
+ " -1.340163 | \n",
+ " 1.773209 | \n",
+ " 0.379780 | \n",
+ " -0.503198 | \n",
+ " 1.800499 | \n",
+ " 0.791461 | \n",
+ " 0.247676 | \n",
+ " -1.514654 | \n",
+ " ... | \n",
+ " 0.247998 | \n",
+ " 0.771679 | \n",
+ " 0.909412 | \n",
+ " -0.689281 | \n",
+ " -0.327642 | \n",
+ " -0.139097 | \n",
+ " -0.055353 | \n",
+ " -0.059752 | \n",
+ " 378.66 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 1.0 | \n",
+ " -0.966272 | \n",
+ " -0.185226 | \n",
+ " 1.792993 | \n",
+ " -0.863291 | \n",
+ " -0.010309 | \n",
+ " 1.247203 | \n",
+ " 0.237609 | \n",
+ " 0.377436 | \n",
+ " -1.387024 | \n",
+ " ... | \n",
+ " -0.108300 | \n",
+ " 0.005274 | \n",
+ " -0.190321 | \n",
+ " -1.175575 | \n",
+ " 0.647376 | \n",
+ " -0.221929 | \n",
+ " 0.062723 | \n",
+ " 0.061458 | \n",
+ " 123.50 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 2.0 | \n",
+ " -1.158233 | \n",
+ " 0.877737 | \n",
+ " 1.548718 | \n",
+ " 0.403034 | \n",
+ " -0.407193 | \n",
+ " 0.095921 | \n",
+ " 0.592941 | \n",
+ " -0.270533 | \n",
+ " 0.817739 | \n",
+ " ... | \n",
+ " -0.009431 | \n",
+ " 0.798278 | \n",
+ " -0.137458 | \n",
+ " 0.141267 | \n",
+ " -0.206010 | \n",
+ " 0.502292 | \n",
+ " 0.219422 | \n",
+ " 0.215153 | \n",
+ " 69.99 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 31 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Time V1 V2 V3 V4 V5 V6 V7 \\\n",
+ "0 0.0 -1.359807 -0.072781 2.536347 1.378155 -0.338321 0.462388 0.239599 \n",
+ "1 0.0 1.191857 0.266151 0.166480 0.448154 0.060018 -0.082361 -0.078803 \n",
+ "2 1.0 -1.358354 -1.340163 1.773209 0.379780 -0.503198 1.800499 0.791461 \n",
+ "3 1.0 -0.966272 -0.185226 1.792993 -0.863291 -0.010309 1.247203 0.237609 \n",
+ "4 2.0 -1.158233 0.877737 1.548718 0.403034 -0.407193 0.095921 0.592941 \n",
+ "\n",
+ " V8 V9 ... V21 V22 V23 V24 V25 \\\n",
+ "0 0.098698 0.363787 ... -0.018307 0.277838 -0.110474 0.066928 0.128539 \n",
+ "1 0.085102 -0.255425 ... -0.225775 -0.638672 0.101288 -0.339846 0.167170 \n",
+ "2 0.247676 -1.514654 ... 0.247998 0.771679 0.909412 -0.689281 -0.327642 \n",
+ "3 0.377436 -1.387024 ... -0.108300 0.005274 -0.190321 -1.175575 0.647376 \n",
+ "4 -0.270533 0.817739 ... -0.009431 0.798278 -0.137458 0.141267 -0.206010 \n",
+ "\n",
+ " V26 V27 V28 Amount Class \n",
+ "0 -0.189115 0.133558 -0.021053 149.62 0 \n",
+ "1 0.125895 -0.008983 0.014724 2.69 0 \n",
+ "2 -0.139097 -0.055353 -0.059752 378.66 0 \n",
+ "3 -0.221929 0.062723 0.061458 123.50 0 \n",
+ "4 0.502292 0.219422 0.215153 69.99 0 \n",
+ "\n",
+ "[5 rows x 31 columns]"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "d4fae789",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Time | \n",
+ " V1 | \n",
+ " V2 | \n",
+ " V3 | \n",
+ " V4 | \n",
+ " V5 | \n",
+ " V6 | \n",
+ " V7 | \n",
+ " V8 | \n",
+ " V9 | \n",
+ " ... | \n",
+ " V21 | \n",
+ " V22 | \n",
+ " V23 | \n",
+ " V24 | \n",
+ " V25 | \n",
+ " V26 | \n",
+ " V27 | \n",
+ " V28 | \n",
+ " Amount | \n",
+ " Class | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | count | \n",
+ " 284807.000000 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " ... | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 2.848070e+05 | \n",
+ " 284807.000000 | \n",
+ " 284807.000000 | \n",
+ "
\n",
+ " \n",
+ " | mean | \n",
+ " 94813.859575 | \n",
+ " 1.168375e-15 | \n",
+ " 3.416908e-16 | \n",
+ " -1.379537e-15 | \n",
+ " 2.074095e-15 | \n",
+ " 9.604066e-16 | \n",
+ " 1.487313e-15 | \n",
+ " -5.556467e-16 | \n",
+ " 1.213481e-16 | \n",
+ " -2.406331e-15 | \n",
+ " ... | \n",
+ " 1.654067e-16 | \n",
+ " -3.568593e-16 | \n",
+ " 2.578648e-16 | \n",
+ " 4.473266e-15 | \n",
+ " 5.340915e-16 | \n",
+ " 1.683437e-15 | \n",
+ " -3.660091e-16 | \n",
+ " -1.227390e-16 | \n",
+ " 88.349619 | \n",
+ " 0.001727 | \n",
+ "
\n",
+ " \n",
+ " | std | \n",
+ " 47488.145955 | \n",
+ " 1.958696e+00 | \n",
+ " 1.651309e+00 | \n",
+ " 1.516255e+00 | \n",
+ " 1.415869e+00 | \n",
+ " 1.380247e+00 | \n",
+ " 1.332271e+00 | \n",
+ " 1.237094e+00 | \n",
+ " 1.194353e+00 | \n",
+ " 1.098632e+00 | \n",
+ " ... | \n",
+ " 7.345240e-01 | \n",
+ " 7.257016e-01 | \n",
+ " 6.244603e-01 | \n",
+ " 6.056471e-01 | \n",
+ " 5.212781e-01 | \n",
+ " 4.822270e-01 | \n",
+ " 4.036325e-01 | \n",
+ " 3.300833e-01 | \n",
+ " 250.120109 | \n",
+ " 0.041527 | \n",
+ "
\n",
+ " \n",
+ " | min | \n",
+ " 0.000000 | \n",
+ " -5.640751e+01 | \n",
+ " -7.271573e+01 | \n",
+ " -4.832559e+01 | \n",
+ " -5.683171e+00 | \n",
+ " -1.137433e+02 | \n",
+ " -2.616051e+01 | \n",
+ " -4.355724e+01 | \n",
+ " -7.321672e+01 | \n",
+ " -1.343407e+01 | \n",
+ " ... | \n",
+ " -3.483038e+01 | \n",
+ " -1.093314e+01 | \n",
+ " -4.480774e+01 | \n",
+ " -2.836627e+00 | \n",
+ " -1.029540e+01 | \n",
+ " -2.604551e+00 | \n",
+ " -2.256568e+01 | \n",
+ " -1.543008e+01 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 25% | \n",
+ " 54201.500000 | \n",
+ " -9.203734e-01 | \n",
+ " -5.985499e-01 | \n",
+ " -8.903648e-01 | \n",
+ " -8.486401e-01 | \n",
+ " -6.915971e-01 | \n",
+ " -7.682956e-01 | \n",
+ " -5.540759e-01 | \n",
+ " -2.086297e-01 | \n",
+ " -6.430976e-01 | \n",
+ " ... | \n",
+ " -2.283949e-01 | \n",
+ " -5.423504e-01 | \n",
+ " -1.618463e-01 | \n",
+ " -3.545861e-01 | \n",
+ " -3.171451e-01 | \n",
+ " -3.269839e-01 | \n",
+ " -7.083953e-02 | \n",
+ " -5.295979e-02 | \n",
+ " 5.600000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 50% | \n",
+ " 84692.000000 | \n",
+ " 1.810880e-02 | \n",
+ " 6.548556e-02 | \n",
+ " 1.798463e-01 | \n",
+ " -1.984653e-02 | \n",
+ " -5.433583e-02 | \n",
+ " -2.741871e-01 | \n",
+ " 4.010308e-02 | \n",
+ " 2.235804e-02 | \n",
+ " -5.142873e-02 | \n",
+ " ... | \n",
+ " -2.945017e-02 | \n",
+ " 6.781943e-03 | \n",
+ " -1.119293e-02 | \n",
+ " 4.097606e-02 | \n",
+ " 1.659350e-02 | \n",
+ " -5.213911e-02 | \n",
+ " 1.342146e-03 | \n",
+ " 1.124383e-02 | \n",
+ " 22.000000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | 75% | \n",
+ " 139320.500000 | \n",
+ " 1.315642e+00 | \n",
+ " 8.037239e-01 | \n",
+ " 1.027196e+00 | \n",
+ " 7.433413e-01 | \n",
+ " 6.119264e-01 | \n",
+ " 3.985649e-01 | \n",
+ " 5.704361e-01 | \n",
+ " 3.273459e-01 | \n",
+ " 5.971390e-01 | \n",
+ " ... | \n",
+ " 1.863772e-01 | \n",
+ " 5.285536e-01 | \n",
+ " 1.476421e-01 | \n",
+ " 4.395266e-01 | \n",
+ " 3.507156e-01 | \n",
+ " 2.409522e-01 | \n",
+ " 9.104512e-02 | \n",
+ " 7.827995e-02 | \n",
+ " 77.165000 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | max | \n",
+ " 172792.000000 | \n",
+ " 2.454930e+00 | \n",
+ " 2.205773e+01 | \n",
+ " 9.382558e+00 | \n",
+ " 1.687534e+01 | \n",
+ " 3.480167e+01 | \n",
+ " 7.330163e+01 | \n",
+ " 1.205895e+02 | \n",
+ " 2.000721e+01 | \n",
+ " 1.559499e+01 | \n",
+ " ... | \n",
+ " 2.720284e+01 | \n",
+ " 1.050309e+01 | \n",
+ " 2.252841e+01 | \n",
+ " 4.584549e+00 | \n",
+ " 7.519589e+00 | \n",
+ " 3.517346e+00 | \n",
+ " 3.161220e+01 | \n",
+ " 3.384781e+01 | \n",
+ " 25691.160000 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
8 rows × 31 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Time V1 V2 V3 V4 \\\n",
+ "count 284807.000000 2.848070e+05 2.848070e+05 2.848070e+05 2.848070e+05 \n",
+ "mean 94813.859575 1.168375e-15 3.416908e-16 -1.379537e-15 2.074095e-15 \n",
+ "std 47488.145955 1.958696e+00 1.651309e+00 1.516255e+00 1.415869e+00 \n",
+ "min 0.000000 -5.640751e+01 -7.271573e+01 -4.832559e+01 -5.683171e+00 \n",
+ "25% 54201.500000 -9.203734e-01 -5.985499e-01 -8.903648e-01 -8.486401e-01 \n",
+ "50% 84692.000000 1.810880e-02 6.548556e-02 1.798463e-01 -1.984653e-02 \n",
+ "75% 139320.500000 1.315642e+00 8.037239e-01 1.027196e+00 7.433413e-01 \n",
+ "max 172792.000000 2.454930e+00 2.205773e+01 9.382558e+00 1.687534e+01 \n",
+ "\n",
+ " V5 V6 V7 V8 V9 \\\n",
+ "count 2.848070e+05 2.848070e+05 2.848070e+05 2.848070e+05 2.848070e+05 \n",
+ "mean 9.604066e-16 1.487313e-15 -5.556467e-16 1.213481e-16 -2.406331e-15 \n",
+ "std 1.380247e+00 1.332271e+00 1.237094e+00 1.194353e+00 1.098632e+00 \n",
+ "min -1.137433e+02 -2.616051e+01 -4.355724e+01 -7.321672e+01 -1.343407e+01 \n",
+ "25% -6.915971e-01 -7.682956e-01 -5.540759e-01 -2.086297e-01 -6.430976e-01 \n",
+ "50% -5.433583e-02 -2.741871e-01 4.010308e-02 2.235804e-02 -5.142873e-02 \n",
+ "75% 6.119264e-01 3.985649e-01 5.704361e-01 3.273459e-01 5.971390e-01 \n",
+ "max 3.480167e+01 7.330163e+01 1.205895e+02 2.000721e+01 1.559499e+01 \n",
+ "\n",
+ " ... V21 V22 V23 V24 \\\n",
+ "count ... 2.848070e+05 2.848070e+05 2.848070e+05 2.848070e+05 \n",
+ "mean ... 1.654067e-16 -3.568593e-16 2.578648e-16 4.473266e-15 \n",
+ "std ... 7.345240e-01 7.257016e-01 6.244603e-01 6.056471e-01 \n",
+ "min ... -3.483038e+01 -1.093314e+01 -4.480774e+01 -2.836627e+00 \n",
+ "25% ... -2.283949e-01 -5.423504e-01 -1.618463e-01 -3.545861e-01 \n",
+ "50% ... -2.945017e-02 6.781943e-03 -1.119293e-02 4.097606e-02 \n",
+ "75% ... 1.863772e-01 5.285536e-01 1.476421e-01 4.395266e-01 \n",
+ "max ... 2.720284e+01 1.050309e+01 2.252841e+01 4.584549e+00 \n",
+ "\n",
+ " V25 V26 V27 V28 Amount \\\n",
+ "count 2.848070e+05 2.848070e+05 2.848070e+05 2.848070e+05 284807.000000 \n",
+ "mean 5.340915e-16 1.683437e-15 -3.660091e-16 -1.227390e-16 88.349619 \n",
+ "std 5.212781e-01 4.822270e-01 4.036325e-01 3.300833e-01 250.120109 \n",
+ "min -1.029540e+01 -2.604551e+00 -2.256568e+01 -1.543008e+01 0.000000 \n",
+ "25% -3.171451e-01 -3.269839e-01 -7.083953e-02 -5.295979e-02 5.600000 \n",
+ "50% 1.659350e-02 -5.213911e-02 1.342146e-03 1.124383e-02 22.000000 \n",
+ "75% 3.507156e-01 2.409522e-01 9.104512e-02 7.827995e-02 77.165000 \n",
+ "max 7.519589e+00 3.517346e+00 3.161220e+01 3.384781e+01 25691.160000 \n",
+ "\n",
+ " Class \n",
+ "count 284807.000000 \n",
+ "mean 0.001727 \n",
+ "std 0.041527 \n",
+ "min 0.000000 \n",
+ "25% 0.000000 \n",
+ "50% 0.000000 \n",
+ "75% 0.000000 \n",
+ "max 1.000000 \n",
+ "\n",
+ "[8 rows x 31 columns]"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.describe()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "ab04cf33-e36b-4991-917b-e91a2dfa7fcd",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "RangeIndex: 284807 entries, 0 to 284806\n",
+ "Data columns (total 31 columns):\n",
+ " # Column Non-Null Count Dtype \n",
+ "--- ------ -------------- ----- \n",
+ " 0 Time 284807 non-null float64\n",
+ " 1 V1 284807 non-null float64\n",
+ " 2 V2 284807 non-null float64\n",
+ " 3 V3 284807 non-null float64\n",
+ " 4 V4 284807 non-null float64\n",
+ " 5 V5 284807 non-null float64\n",
+ " 6 V6 284807 non-null float64\n",
+ " 7 V7 284807 non-null float64\n",
+ " 8 V8 284807 non-null float64\n",
+ " 9 V9 284807 non-null float64\n",
+ " 10 V10 284807 non-null float64\n",
+ " 11 V11 284807 non-null float64\n",
+ " 12 V12 284807 non-null float64\n",
+ " 13 V13 284807 non-null float64\n",
+ " 14 V14 284807 non-null float64\n",
+ " 15 V15 284807 non-null float64\n",
+ " 16 V16 284807 non-null float64\n",
+ " 17 V17 284807 non-null float64\n",
+ " 18 V18 284807 non-null float64\n",
+ " 19 V19 284807 non-null float64\n",
+ " 20 V20 284807 non-null float64\n",
+ " 21 V21 284807 non-null float64\n",
+ " 22 V22 284807 non-null float64\n",
+ " 23 V23 284807 non-null float64\n",
+ " 24 V24 284807 non-null float64\n",
+ " 25 V25 284807 non-null float64\n",
+ " 26 V26 284807 non-null float64\n",
+ " 27 V27 284807 non-null float64\n",
+ " 28 V28 284807 non-null float64\n",
+ " 29 Amount 284807 non-null float64\n",
+ " 30 Class 284807 non-null int64 \n",
+ "dtypes: float64(30), int64(1)\n",
+ "memory usage: 67.4 MB\n"
+ ]
+ }
+ ],
+ "source": [
+ "df.info()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "6c31fc17",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class_counts = df.Class.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "29b823c1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "class_counts.plot(kind=\"bar\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "918cf628",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "class_counts.plot(kind=\"bar\", logy=True)\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "b6af24e9",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "\n",
+ "V1_0 = df[df[\"Class\"]==0].V1\n",
+ "\n",
+ "ax.set_xlabel(\"V1\")\n",
+ "ax.axis([-30, 5, 0, 0.2])\n",
+ "\n",
+ "df[df[\"Class\"]==0].V1.hist(ax=ax, label = \"Class 0\", bins=20, alpha=0.5, color='gray', density=True)\n",
+ "df[df[\"Class\"]==1].V1.hist(ax=ax, label = \"Class 1\", bins=20, alpha=0.5, color='red', density=True)\n",
+ "\n",
+ "legend = fig.legend(loc=\"upper right\", frameon=False)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "af2c4346",
+ "metadata": {},
+ "source": [
+ "## Задание на повторение материала\n",
+ "### 1. Создать одномерный массив Numpy под названием a из 12 последовательных целых чисел чисел от 12 до 24 невключительно"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "id": "557a8256-9c01-4f25-a014-0d228c69024c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[12 13 14 15 16 17 18 19 20 21 22 23]\n"
+ ]
+ }
+ ],
+ "source": [
+ "a = np.arange(12, 24, dtype=int)\n",
+ " \n",
+ "print(a)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1c77f2b4-a4a1-4758-ab20-9c95b50a7228",
+ "metadata": {},
+ "source": [
+ "### 2. Создать 5 двумерных массивов разной формы из массива a. Не использовать в аргументах метода reshape число -1."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "c532a55c-a2e4-41b8-88fc-57202937c2df",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12],\n",
+ " [13],\n",
+ " [14],\n",
+ " [15],\n",
+ " [16],\n",
+ " [17],\n",
+ " [18],\n",
+ " [19],\n",
+ " [20],\n",
+ " [21],\n",
+ " [22],\n",
+ " [23]])"
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (12, 1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "fdd1014d-c6f5-48bc-b047-81038d8fd827",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14, 15, 16, 17],\n",
+ " [18, 19, 20, 21, 22, 23]])"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (2, 6))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "id": "0ad59875-d3b2-4e5e-acfe-574669e8a068",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13],\n",
+ " [14, 15],\n",
+ " [16, 17],\n",
+ " [18, 19],\n",
+ " [20, 21],\n",
+ " [22, 23]])"
+ ]
+ },
+ "execution_count": 45,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (6, 2))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "fc9a8aaa-d246-4876-a818-3bbb268a4a06",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14, 15],\n",
+ " [16, 17, 18, 19],\n",
+ " [20, 21, 22, 23]])"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (3, 4))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "f58c5c92-4e45-4b11-8ee9-03930d40213e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14],\n",
+ " [15, 16, 17],\n",
+ " [18, 19, 20],\n",
+ " [21, 22, 23]])"
+ ]
+ },
+ "execution_count": 47,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (4, 3))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dda06888-4535-4b11-a8ac-8366cb665662",
+ "metadata": {},
+ "source": [
+ "### 3. Создать 5 двумерных массивов разной формы из массива a. Использовать в аргументах метода reshape число -1 (в трех примерах - для обозначения числа столбцов, в двух - для строк)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "5d2eceed-d468-43e2-a896-03db80347de7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14, 15, 16, 17],\n",
+ " [18, 19, 20, 21, 22, 23]])"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (2, -1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "5d4e33c6-9991-48f1-92dc-fe039f1f1403",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14, 15],\n",
+ " [16, 17, 18, 19],\n",
+ " [20, 21, 22, 23]])"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (3, -1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "id": "7c5ee813-ab4a-44eb-af9b-0c6f086ff275",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14],\n",
+ " [15, 16, 17],\n",
+ " [18, 19, 20],\n",
+ " [21, 22, 23]])"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (4, -1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "id": "19305afe-f66e-439d-86fb-4f1a8e9289fd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13],\n",
+ " [14, 15],\n",
+ " [16, 17],\n",
+ " [18, 19],\n",
+ " [20, 21],\n",
+ " [22, 23]])"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (-1, 2))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "id": "021fef61-9517-4ed0-9a49-f0dd68416dff",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[12, 13, 14, 15, 16, 17],\n",
+ " [18, 19, 20, 21, 22, 23]])"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "np.reshape(a, (-1, 6))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "aae22acf-9657-4492-b4d8-d6707dd79d6e",
+ "metadata": {},
+ "source": [
+ "### 4. Можно ли массив Numpy, состоящий из одного столбца и 12 строк, назвать одномерным?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "id": "a039beed-b1fb-428a-995b-f4788b8ba5c2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "shape=(12, 1)=>размерность=2, следоватьельно одномерным может быть только вектор\n"
+ ]
+ }
+ ],
+ "source": [
+ "b = np.resize(a, (12, 1))\n",
+ "\n",
+ "print(f\"shape={b.shape}=>размерность={b.ndim}, следоватьельно одномерным может быть только вектор\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "65303edd-4937-4b7e-85f0-82412f9e320b",
+ "metadata": {},
+ "source": [
+ "### 5. Создать массив из 3 строк и 4 столбцов, состоящий из случайных чисел с плавающей запятой из нормального распределения со средним, равным 0 и среднеквадратичным отклонением, равным 1.0. Получить из этого массива одномерный массив с таким же атрибутом size, как и исходный массив."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "id": "6f9c7bba-d9b2-4e26-8630-8322e6d1f329",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 5.30087681e-01 -1.00730270e+00 3.49023257e-01 1.17610515e-01]\n",
+ " [-3.73873348e-05 -4.65003983e-01 1.17452549e+00 3.80377532e-02]\n",
+ " [-4.71755245e-02 3.99082256e-01 -1.15223721e-01 -2.65055731e+00]]\n",
+ "[[ 5.30087681e-01 -1.00730270e+00 3.49023257e-01 1.17610515e-01\n",
+ " -3.73873348e-05 -4.65003983e-01 1.17452549e+00 3.80377532e-02\n",
+ " -4.71755245e-02 3.99082256e-01 -1.15223721e-01 -2.65055731e+00]]\n",
+ "a.size = 12 <=> 12 = b.size\n"
+ ]
+ }
+ ],
+ "source": [
+ "a = np.random.randn(3, 4)\n",
+ "b = a.reshape(1, 12)\n",
+ "print(a)\n",
+ "print(b)\n",
+ "print(f\"a.size = {a.size} <=> {b.size} = b.size\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6b177aff-4007-4af0-a927-82cb03183362",
+ "metadata": {},
+ "source": [
+ "### 6. Создать массив a, состоящий из целых чисел, убывающих от 20 до 0 невключительно с интервалом 2."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "id": "a78dbbed-cbf3-4536-8e0a-f19586aa9218",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[20 18 16 14 12 10 8 6 4 2]\n"
+ ]
+ }
+ ],
+ "source": [
+ "a = np.arange(20, 0, -2, dtype=int)\n",
+ "\n",
+ "print(a)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3edb8cc8-ca5a-414f-9928-0c3be3fae6a1",
+ "metadata": {},
+ "source": [
+ "### 7. Создать массив b, состоящий из 1 строки и 10 столбцов: целых чисел, убывающих от 20 до 1 невключительно с интервалом 2. В чем разница между массивами a и b?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "id": "de8d49ea-a843-46ff-ab8f-f2b967cebeb2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[20 18 16 14 12 10 8 6 4 2] = [20 18 16 14 12 10 8 6 4 2] => разницы нет\n"
+ ]
+ }
+ ],
+ "source": [
+ "b = np.arange(20, 1, -2, dtype=int)\n",
+ "\n",
+ "print(f\"{a} = {b} => разницы нет\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "48add411-602f-46b7-9cb5-98388a6d742c",
+ "metadata": {},
+ "source": [
+ "### 8. Вертикально соединить массивы a и b. a - двумерный массив из нулей, число строк которого больше 1 и на 1 меньше, чем число строк двумерного массива b, состоящего из единиц. Итоговый массив v должен иметь атрибут size, равный 10."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "id": "e64df321-366c-4400-a406-b775e19a6870",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[0. 0.]\n",
+ " [0. 0.]\n",
+ " [1. 1.]\n",
+ " [1. 1.]\n",
+ " [1. 1.]] \n",
+ " size=10\n"
+ ]
+ }
+ ],
+ "source": [
+ "a = np.zeros((2, 2))\n",
+ "b = np.ones((3,2))\n",
+ "c = np.vstack((a, b))\n",
+ "print(f\"{c} \\n size={c.size}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "85da760f-5076-4e9a-acb4-4e756ac72407",
+ "metadata": {},
+ "source": [
+ "### 9. Создать одномерный массив а, состоящий из последовательности целых чисел от 0 до 12. Поменять форму этого массива, чтобы получилась матрица A (двумерный массив Numpy), состоящая из 4 строк и 3 столбцов. Получить матрицу At путем транспонирования атрицы A. Получить матрицу B, умножив матрицу A на матрицу At с помощью матричного умножения. Какой размер имеет матрица B? Получится ли вычислить обратную матрицу для матрицы B и почему?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "bc97b82a-eaec-4f6c-b9c8-4159dc45c44f",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "матрица B =\n",
+ "[[ 5 14 23 32]\n",
+ " [ 14 50 86 122]\n",
+ " [ 23 86 149 212]\n",
+ " [ 32 122 212 302]]\n",
+ "размер = (4, 4)\n",
+ "определитель = 0 => обратная матрица не существует\n"
+ ]
+ }
+ ],
+ "source": [
+ "a = np.arange(0, 12, dtype=int)\n",
+ "A = np.reshape(a, (4, -1))\n",
+ "At = A.T\n",
+ "B = np.dot(A, At)\n",
+ "print(f\"матрица B =\\n{B}\\nразмер = {B.shape}\\nопределитель = {np.linalg.det(B):1.0f} => обратная матрица не существует\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "957e860b-9d20-46cf-91b0-2662c2faeebb",
+ "metadata": {},
+ "source": [
+ "### 10. Инициализируйте генератор случайных числе с помощью объекта seed, равного 42."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "97c0fa11-6530-461b-bb89-65cb6d38b83f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "seed(42)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7d7b04ea-a205-4a64-bf93-f68c62b69b5f",
+ "metadata": {},
+ "source": [
+ "### 11. Создайте одномерный массив c, составленный из последовательности 16-ти случайных равномерно распределенных целых чисел от 0 до 16 невключительно."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "b307b5d5-e3aa-44b8-94f3-2a9b8877fd5b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16]\n"
+ ]
+ }
+ ],
+ "source": [
+ "c = np.linspace(start=0, stop=16, num=16, dtype=int)\n",
+ "print(c)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3107f89b-c513-4eeb-b21f-d091920b51b3",
+ "metadata": {},
+ "source": [
+ "### 12. Поменяйте его форму так, чтобы получилась квадратная матрица C. Получите матрицу D, поэлементно прибавив матрицу B из предыдущего вопроса к матрице C, умноженной на 10. Вычислите определитель, ранг и обратную матрицу D_inv для D."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "id": "721efedc-bcdd-4aa0-b7bf-58469b31fbf2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "C =\n",
+ "[[ 0 1 2 3]\n",
+ " [ 4 5 6 7]\n",
+ " [ 8 9 10 11]\n",
+ " [12 13 14 16]]\n",
+ "D =\n",
+ "[[ 5 24 43 62]\n",
+ " [ 54 100 146 192]\n",
+ " [103 176 249 322]\n",
+ " [152 252 352 462]]\n",
+ "определитель = 2.2623680706601445e-10\n",
+ "ранг = 3\n",
+ "D_inv =\n",
+ "[[-3.51843721e+13 7.03687442e+13 -3.51843721e+13 -3.12500000e-03]\n",
+ " [ 7.03687442e+13 -1.40737488e+14 7.03687442e+13 1.06250000e-01]\n",
+ " [-3.51843721e+13 7.03687442e+13 -3.51843721e+13 -2.03125000e-01]\n",
+ " [ 2.00000000e-01 -3.00000000e-01 -0.00000000e+00 1.00000000e-01]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "C = np.reshape(c, (4, -1))\n",
+ "print(f\"C =\\n{C}\")\n",
+ "D = B + C * 10\n",
+ "D_inv = np.linalg.inv(D)\n",
+ "print(f\"D =\\n{D}\\nопределитель = {np.linalg.det(D)}\\nранг = {np.linalg.matrix_rank(D)}\\nD_inv =\\n{D_inv}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "05de35ef-439f-4273-8902-9fbf5d1dd878",
+ "metadata": {},
+ "source": [
+ "### 13. Приравняйте к нулю отрицательные числа в матрице D_inv, а положительные - к единице. Убедитесь, что в матрице D_inv остались только нули и единицы. С помощью функции numpy.where, используя матрицу D_inv в качестве маски, а матрицы B и C - в качестве источников данных, получите матрицу E размером 4x4. Элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 1, должны быть равны соответствующему элементу матрицы B, а элементы матрицы E, для которых соответствующий элемент матрицы D_inv равен 0, должны быть равны соответствующему элементу матрицы C."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "id": "ae14bda8-3197-4ce6-8ed7-9227f40ee440",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "D_inv =\n",
+ "[[ 0. 1. 0. 0.]\n",
+ " [ 1. 0. 1. 1.]\n",
+ " [ 0. 1. 0. 0.]\n",
+ " [ 1. 0. -0. 1.]]\n",
+ "E =\n",
+ "[[ 0. 14. 2. 3.]\n",
+ " [ 14. 5. 86. 122.]\n",
+ " [ 8. 86. 10. 11.]\n",
+ " [ 32. 13. 14. 302.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "D_inv[np.where(D_inv < 0)] = 0\n",
+ "D_inv[np.where(D_inv > 0)] = 1\n",
+ "print(f\"D_inv =\\n{D_inv}\")\n",
+ "\n",
+ "E = np.zeros((4, 4))\n",
+ "E[np.where(D_inv == 0)] = C[np.where(D_inv == 0)]\n",
+ "E[np.where(D_inv == 1)] = B[np.where(D_inv == 1)]\n",
+ "print(f\"E =\\n{E}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e8ecf6a0-078c-4d26-9aa0-8d84514df3e7",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.12.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}