From ae6c043c612a919a81a25fee153577d7b1d1518c Mon Sep 17 00:00:00 2001
From: Mirko Birbaumer <mirko.birbaumer@hslu.ch>
Date: Fri, 16 Sep 2022 13:46:19 +0000
Subject: [PATCH] added stinkbug

---
 .../Preliminaries_Numpy_Pandas.ipynb          | 1041 ++++++++++++++---
 .../Block_0/Examples script/stinkbug4.JPG     |  Bin 0 -> 31732 bytes
 2 files changed, 856 insertions(+), 185 deletions(-)
 create mode 100644 notebooks/Block_0/Examples script/stinkbug4.JPG

diff --git a/notebooks/Block_0/Examples script/Preliminaries_Numpy_Pandas.ipynb b/notebooks/Block_0/Examples script/Preliminaries_Numpy_Pandas.ipynb
index a3a7307..adce28a 100644
--- a/notebooks/Block_0/Examples script/Preliminaries_Numpy_Pandas.ipynb	
+++ b/notebooks/Block_0/Examples script/Preliminaries_Numpy_Pandas.ipynb	
@@ -963,21 +963,19 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 46,
+   "execution_count": 96,
    "metadata": {},
    "outputs": [
     {
-     "data": {
-      "text/plain": [
-       "[6, 7, 8, 9, 10]"
-      ]
-     },
-     "execution_count": 46,
-     "metadata": {},
-     "output_type": "execute_result"
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "853 ns ± 38.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n"
+     ]
     }
    ],
    "source": [
+    "%%timeit\n",
     "values = [1,2,3,4,5]\n",
     "for i in range(len(values)):\n",
     "    values[i] += 5\n",
@@ -1009,12 +1007,22 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 47,
+   "execution_count": 97,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "3.24 µs ± 170 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
+     ]
+    }
+   ],
    "source": [
+    "%%timeit\n",
     "values = [1,2,3,4,5]\n",
-    "values = np.array(values) + 5"
+    "values = np.array(values) + 5\n",
+    "values"
    ]
   },
   {
@@ -1027,255 +1035,918 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 98,
    "metadata": {},
-   "outputs": [],
-   "source": []
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "4.07 µs ± 262 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
+     ]
+    }
+   ],
+   "source": [
+    "%%timeit\n",
+    "values = [1,2,3,4,5]\n",
+    "values = np.array(values)\n",
+    "values += 5\n",
+    "values"
+   ]
   },
   {
-   "cell_type": "code",
-   "execution_count": null,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
-   "source": []
+   "source": [
+    "We should point out, NumPy actually has functions for things like adding, multiplying, etc. \n",
+    "But it also supports using the standard math operators. So the following two lines are equivalent:"
+   ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 59,
    "metadata": {},
-   "outputs": [],
-   "source": []
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([ 5, 10, 15, 20])"
+      ]
+     },
+     "execution_count": 59,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "x = np.multiply(v, 5)\n",
+    "x"
+   ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 60,
    "metadata": {},
-   "outputs": [],
-   "source": []
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([ 5, 10, 15, 20])"
+      ]
+     },
+     "execution_count": 60,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "x = v * 5\n",
+    "x"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We will usually use the operators instead of the functions because they are more convenient to \n",
+    "type and easier to read, but it's really just personal preference.\n",
+    "\n",
+    "One more example of operating with scalars and `ndarrays`. Let's say you have a matrix `m` and you want \n",
+    "to reuse it, but first you need to set all its values to zero. Easy, just multiply by zero and assign \n",
+    "the result back to the matrix, like this:"
+   ]
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 61,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[6, 7, 8, 9, 10]\n",
-      "[ 6  7  8  9 10]\n",
-      "[30 35 40 45 50] \n",
-      " [30 35 40 45 50] \n",
-      "\n",
-      "a =\n",
-      " [[1 3]\n",
-      " [5 7]] \n",
-      "b =\n",
-      " [[2 4]\n",
-      " [6 8]]\n",
-      "a + b =\n",
-      " [[ 3  7]\n",
-      " [11 15]]\n",
-      "a * b =\n",
-      " [[ 2 12]\n",
-      " [30 56]]\n"
-     ]
-    },
-    {
-     "ename": "ValueError",
-     "evalue": "operands could not be broadcast together with shapes (2,2) (5,) ",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-4-7ddd6b5f4e75>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     24\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"a * b =\\n\"\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[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     25\u001b[0m \u001b[0;31m# Shape mismatch:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"a * values =\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (2,2) (5,) "
-     ]
+     "data": {
+      "text/plain": [
+       "array([[0, 0, 0],\n",
+       "       [0, 0, 0],\n",
+       "       [0, 0, 0]])"
+      ]
+     },
+     "execution_count": 61,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "# The Python way:\n",
-    "values = [1, 2, 3, 4, 5]\n",
-    "for i in range(len(values)):\n",
-    "    values[i] += 5\n",
-    "    \n",
-    "print(values)\n",
+    "m *= 0\n",
+    "m"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Element-wise Matrix Operations\n",
     "\n",
-    "# The Numpy way:\n",
-    "values = np.array([1, 2, 3, 4, 5])\n",
-    "values += 5\n",
+    "The same functions and operators that work with scalars and matrices also work with \n",
+    "other dimensions. You just need to make sure that the items you perform the operation \n",
+    "on have compatible shapes.\n",
     "\n",
-    "print(values)\n",
+    "Let's say you want to get the squared values of a matrix. That's simply `x = m * m` (or if you \n",
+    "want to assign the value back to m, it's just `m *= m`\n",
     "\n",
-    "# Multiplication\n",
-    "x = np.multiply(values, 5)\n",
-    "y = values * 5\n",
-    "print(x, \"\\n\", y, \"\\n\")\n",
+    "This works because it's an element-wise multiplication between two identically-shaped matrices. \n",
+    "(In this case, they are shaped the same because they are actually the same object.)\n",
     "\n",
-    "# Element wise matrix operations\n",
+    "Here's another example:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 68,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[1, 3],\n",
+       "       [5, 7]])"
+      ]
+     },
+     "execution_count": 68,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
     "a = np.array([[1,3],[5,7]])\n",
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[2, 4],\n",
+       "       [6, 8]])"
+      ]
+     },
+     "execution_count": 69,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
     "b = np.array([[2,4],[6,8]])\n",
-    "print(\"a =\\n\", a, \"\\nb =\\n\", b)\n",
-    "print(\"a + b =\\n\", a + b)\n",
-    "print(\"a * b =\\n\", a * b)\n",
-    "# Shape mismatch:\n",
-    "print(\"a * values =\\n\", a * values)"
+    "b"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 3,  7],\n",
+       "       [11, 15]])"
+      ]
+     },
+     "execution_count": 70,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a + b"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Numpy Matrix Multiplication\n",
-    "Recap element-wise multiplication:"
+    "And if you try working with incompatible shapes, you would get an error:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 71,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "m =\n",
-      " [[1 2 3]\n",
-      " [4 5 6]] \n",
-      "n =\n",
-      " [[0.25 0.5  0.75]\n",
-      " [1.   1.25 1.5 ]]\n",
-      "x =\n",
-      " [[0.25 1.   2.25]\n",
-      " [4.   6.25 9.  ]] \n",
-      "y =\n",
-      " [[0.25 1.   2.25]\n",
-      " [4.   6.25 9.  ]]\n"
-     ]
+     "data": {
+      "text/plain": [
+       "array([[1, 3],\n",
+       "       [5, 7]])"
+      ]
+     },
+     "execution_count": 71,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "# Elementwise recap:\n",
-    "m = np.array([[1,2,3],[4,5,6]])\n",
-    "# Scalar multiplication\n",
-    "n = m * 0.25\n",
-    "# Python Elementwise matrix multiplication\n",
-    "x = m * n\n",
-    "# Numpy Elementwise matrix multiplication\n",
-    "y = np.multiply(m, n)\n",
-    "\n",
-    "print(\"m =\\n\", m, \"\\nn =\\n\", n)\n",
-    "print(\"x =\\n\", x, \"\\ny =\\n\", y)"
+    "a = np.array([[1,3],[5,7]])\n",
+    "a"
    ]
   },
   {
-   "cell_type": "markdown",
+   "cell_type": "code",
+   "execution_count": 72,
    "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[2, 3, 6],\n",
+       "       [4, 5, 9],\n",
+       "       [1, 8, 7]])"
+      ]
+     },
+     "execution_count": 72,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "Matrix Product:"
+    "c = np.array([[2,3,6],[4,5,9],[1,8,7]])\n",
+    "c"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 73,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "a =\n",
-      " [[1 2 3 4]\n",
-      " [5 6 7 8]] \n",
-      "a.shape =\n",
-      " (2, 4) \n",
-      "b =\n",
-      " [[ 1  2  3]\n",
-      " [ 4  5  6]\n",
-      " [ 7  8  9]\n",
-      " [10 11 12]] \n",
-      "b.shape =\n",
-      " (4, 3)\n",
-      "c = \n",
-      " [[ 70  80  90]\n",
-      " [158 184 210]] \n",
-      "c.shape =\n",
-      " (2, 3)\n",
-      "d = \n",
-      " [[ 70  80  90]\n",
-      " [158 184 210]] \n",
-      "d.shape =\n",
-      " (2, 3)\n"
-     ]
+     "data": {
+      "text/plain": [
+       "(2, 2)"
+      ]
+     },
+     "execution_count": 73,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
-    "\"\"\" Using np.matmul \"\"\"\n",
-    "a = np.array([[1,2,3,4],[5,6,7,8]])\n",
-    "b = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])\n",
-    "\n",
-    "print(\"a =\\n\", a, \"\\na.shape =\\n\", a.shape, \"\\nb =\\n\", b, \"\\nb.shape =\\n\", b.shape)\n",
-    "\n",
-    "# Matrix product\n",
-    "c = np.matmul(a, b)\n",
-    "print(\"c = \\n\", c, \"\\nc.shape =\\n\", c.shape)\n",
-    "\n",
-    "# Dimension mismatch:\n",
-    "# print(np.matmul(b, a))\n",
-    "\"\"\" Using np.dot \"\"\"\n",
-    "d = np.dot(a, b)\n",
-    "print(\"d = \\n\", d, \"\\nd.shape =\\n\", d.shape)\n"
+    "a.shape"
    ]
   },
   {
-   "cell_type": "markdown",
+   "cell_type": "code",
+   "execution_count": 74,
    "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(3, 3)"
+      ]
+     },
+     "execution_count": 74,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "## Transpose"
+    "c.shape"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 75,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "m = \n",
-      " [[ 1  2  3  4]\n",
-      " [ 5  6  7  8]\n",
-      " [ 9 10 11 12]] \n",
-      "m.T = \n",
-      " [[ 1  5  9]\n",
-      " [ 2  6 10]\n",
-      " [ 3  7 11]\n",
-      " [ 4  8 12]]\n",
-      "m = \n",
-      " [[  1   2   3   4]\n",
-      " [  5   6   7 200]\n",
-      " [  9  10  11  12]] \n",
-      "m_t = \n",
-      " [[  1   5   9]\n",
-      " [  2   6  10]\n",
-      " [  3   7  11]\n",
-      " [  4 200  12]]\n",
-      "entries [3][1], [1][3], respectively are edited in both matrices\n"
+     "ename": "ValueError",
+     "evalue": "operands could not be broadcast together with shapes (2,2) (3,3) ",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "\u001b[0;32m<ipython-input-75-e81e582b6fa9>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (2,2) (3,3) "
      ]
     }
    ],
    "source": [
-    "m = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n",
-    "print(\"m = \\n\", m,\"\\nm.T = \\n\", m.T)\n",
-    "\n",
-    "# note how the transposed matrix is not a copy of the original:\n",
-    "m_t = m.T\n",
-    "m_t[3][1] = 200\n",
-    "print(\"m = \\n\", m, \"\\nm_t = \\n\", m_t)\n",
-    "print(\"entries [3][1], [1][3], respectively are edited in both matrices\")"
+    "a + c"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[1, 2, 3],\n",
+       "       [4, 5, 6]])"
+      ]
+     },
+     "execution_count": 76,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m = np.array([[1,2,3],[4,5,6]])\n",
+    "m"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": 77,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[0.25, 0.5 , 0.75],\n",
+       "       [1.  , 1.25, 1.5 ]])"
+      ]
+     },
+     "execution_count": 77,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "n = m * 0.25\n",
+    "n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 79,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[0.25, 1.  , 2.25],\n",
+       "       [4.  , 6.25, 9.  ]])"
+      ]
+     },
+     "execution_count": 79,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m * n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 80,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[0.25, 1.  , 2.25],\n",
+       "       [4.  , 6.25, 9.  ]])"
+      ]
+     },
+     "execution_count": 80,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.multiply(m, n)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "To find the matrix product, you use NumPy's `matmul` function.\n",
+    "\n",
+    "If you have compatible shapes, then it's as simple as this:\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 81,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[1, 2, 3, 4],\n",
+       "       [5, 6, 7, 8]])"
+      ]
+     },
+     "execution_count": 81,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a = np.array([[1,2,3,4],[5,6,7,8]])\n",
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 82,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(2, 4)"
+      ]
+     },
+     "execution_count": 82,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a.shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 83,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 1,  2,  3],\n",
+       "       [ 4,  5,  6],\n",
+       "       [ 7,  8,  9],\n",
+       "       [10, 11, 12]])"
+      ]
+     },
+     "execution_count": 83,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "b = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])\n",
+    "b"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 84,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(4, 3)"
+      ]
+     },
+     "execution_count": 84,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "b.shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 70,  80,  90],\n",
+       "       [158, 184, 210]])"
+      ]
+     },
+     "execution_count": 85,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "c = np.matmul(a, b)\n",
+    "c"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 86,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(2, 3)"
+      ]
+     },
+     "execution_count": 86,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "c.shape"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "If your matrices have incompatible shapes, you'll get an error, like the following:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 87,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "ValueError",
+     "evalue": "matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 3)",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "\u001b[0;32m<ipython-input-87-af3b88aa2232>\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[0mmatmul\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 3)"
+     ]
+    }
+   ],
+   "source": [
+    "np.matmul(b, a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### NumPy's `dot` function\n",
+    "\n",
+    "You may sometimes see NumPy's `dot` function in places where you would expect a `matmul`. \n",
+    "It turns out that the results of dot and matmul are the same if the matrices are two dimensional.\n",
+    "\n",
+    "So these two results are equivalent:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[1, 2],\n",
+       "       [3, 4]])"
+      ]
+     },
+     "execution_count": 88,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a = np.array([[1,2],[3,4]])\n",
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 89,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 7, 10],\n",
+       "       [15, 22]])"
+      ]
+     },
+     "execution_count": 89,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.dot(a,a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 90,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 7, 10],\n",
+       "       [15, 22]])"
+      ]
+     },
+     "execution_count": 90,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a.dot(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 91,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 7, 10],\n",
+       "       [15, 22]])"
+      ]
+     },
+     "execution_count": 91,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.matmul(a,a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "While these functions return the same results for two dimensional data, you should be careful \n",
+    "about which you choose when working with other data shapes. You can read more about the \n",
+    "differences, and find links to other NumPy functions, in the `matmul` and `dot` documentation. \n",
+    "\n",
+    "\n",
+    "\n",
+    "### Transpose\n",
+    "\n",
+    "Getting the transpose of a matrix is really easy in NumPy. Simply access \n",
+    "its `T` attribute. There is also a `transpose()` function which \n",
+    "returns the same thing, but you will rarely see that used anywhere because \n",
+    "typing `T` is so much easier. \n",
+    "\n",
+    "For example:\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 92,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 1,  2,  3,  4],\n",
+       "       [ 5,  6,  7,  8],\n",
+       "       [ 9, 10, 11, 12]])"
+      ]
+     },
+     "execution_count": 92,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n",
+    "m"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 93,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[ 1,  5,  9],\n",
+       "       [ 2,  6, 10],\n",
+       "       [ 3,  7, 11],\n",
+       "       [ 4,  8, 12]])"
+      ]
+     },
+     "execution_count": 93,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m.T"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "NumPy does this without actually moving any data in memory -\n",
+    "it simply changes the way it indexes the original matrix - \n",
+    "so it's quite efficient.\n",
+    "\n",
+    "However, that also means you need to be careful with how you modify objects, \n",
+    "because they are sharing the same data. For example, with the same matrix `m` \n",
+    "from above, let us make a new variable `m_t` that stores `m`'s transpose. \n",
+    "Then look what happens if we modify a value in `m_t`:\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 94,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[  1,   5,   9],\n",
+       "       [  2,   6,  10],\n",
+       "       [  3,   7,  11],\n",
+       "       [  4, 200,  12]])"
+      ]
+     },
+     "execution_count": 94,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m_t = m.T\n",
+    "m_t[3][1] = 200\n",
+    "m_t"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 95,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[  1,   2,   3,   4],\n",
+       "       [  5,   6,   7, 200],\n",
+       "       [  9,  10,  11,  12]])"
+      ]
+     },
+     "execution_count": 95,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Notice how it modified both the transpose and the original matrix, too. \n",
+    "That's because they are sharing the same copy of data. So remember to \n",
+    "consider the transpose just as a different view of your matrix, rather \n",
+    "than a different matrix entirely."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Geometric Interpretation of Matrix Operation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The following example will show what matrices and vectors are good for. \n",
+    "\n",
+    "We are going to start with a picture of a bug."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<matplotlib.image.AxesImage at 0x7f56299e9250>"
+      ]
+     },
+     "execution_count": 102,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "%matplotlib inline \n",
+    "\n",
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "import matplotlib.image as mpimg\n",
+    "img = mpimg.imread('stinkbug4.JPG')\n",
+    "plt.imshow(img)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "If you open the picture with an image viewer, you can enlarge or reduce the picture or rotate it. Now the important question: What's going on behind the scene if you do rotate the picture? Or in other words: What does the computer do to achieve the rotation? \n",
+    "\n",
+    "One simple solution is using a matrices and vectors."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "ModuleNotFoundError",
+     "evalue": "No module named 'skimage'",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
+      "\u001b[0;32m<ipython-input-105-16d8c7ff678e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mskimage\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mskimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransform\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrescale\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mimg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrescale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m.2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mimg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdelete\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\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[0;34m\u001b[0m\u001b[0m\n",
+      "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'skimage'"
+     ]
+    }
+   ],
+   "source": [
+    "import skimage\n",
+    "from skimage.transform import rescale\n",
+    "img = rescale(img, .2)\n",
+    "\n",
+    "img = np.delete(img,np.arange(20), axis=0)\n",
+    "img = np.delete(img,np.arange(80,100), axis=0)\n",
+    "img = np.delete(img,np.arange(20), axis=1)\n",
+    "img = np.delete(img,np.arange(80,100), axis=1)\n",
+    "\n",
+    "col =np.zeros(img.shape[0]*img.shape[1])\n",
+    "\n",
+    "k = 0\n",
+    "for i in np.arange(img.shape[0]):\n",
+    "    for j in np.arange(img.shape[1]):\n",
+    "        col[k] = np.round(.99*img[i,j,:],0)\n",
+    "        k = k+1\n",
+    "        \n",
+    "image = np.array([np.repeat(np.arange(img.shape[0]),img.shape[1]), np.tile(np.arange(img.shape[1]),img.shape[0])]).T\n",
+    "image[:,0] = image[:,0] - 40\n",
+    "image[:,1] = image[:,1] - 40\n",
+    "\n",
+    "image = image[col==0,:]\n",
+    "\n",
+    "\n",
+    "plt.plot(image[:,0],image[:,1],\"o\",color=\"black\")\n",
+    "plt.axis('square')\n",
+    "plt.xlim(-40,40)\n",
+    "plt.ylim(-40,40)\n",
+    "plt.savefig(\"bug01.eps\",bbox_inches=\"tight\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
diff --git a/notebooks/Block_0/Examples script/stinkbug4.JPG b/notebooks/Block_0/Examples script/stinkbug4.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..eb88408c8e21bc0f89bb4706c7b25be747d589d0
GIT binary patch
literal 31732
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

literal 0
HcmV?d00001

-- 
GitLab