{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Functions of Arrays\n", "\n", "- [Download the lecture notes](https://philchodrow.github.io/PIC16A/content/np_plt/numpy_4.ipynb). \n", "\n", "`numpy` provides a wide range of functions for performing mathematical operations on arrays. We've already seen a few of these, such a addition, multiplication, exponentiation, and trig functions. In this lecture, we'll go into a bit more detail on entrywise functions. We'll also discuss aggregation functions that allow us to summarize large sets of numbers. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),\n", " array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]))" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.arange(1, 11)\n", "B = np.arange(11, 21)\n", "A, B" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ -1, -2, -3, -4, -5, -6, -7, -8, -9, -10])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Negate an array\n", "- A" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# absolute value: \n", "np.abs(-A)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([12, 14, 16, 18, 20, 22, 24, 26, 28, 30])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# entrywise binary arithmetic operators\n", "# all of these also work with a single scalar (e.g. replace B with 2)\n", "A + B" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-10, -10, -10, -10, -10, -10, -10, -10, -10, -10])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A - B" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 11, 24, 39, 56, 75, 96, 119, 144, 171, 200])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * B" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.09090909, 0.16666667, 0.23076923, 0.28571429, 0.33333333,\n", " 0.375 , 0.41176471, 0.44444444, 0.47368421, 0.5 ])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A / B" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 11, 144, 2197, 38416,\n", " 759375, 16777216, 410338673, 11019960576,\n", " 322687697779, 10240000000000])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B ** A" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 1, 2, 0, 4, 3, 2, 1, 0])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B % A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mathematical Functions\n", "\n", "#### Trig Functions" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "theta = np.linspace(0, np.pi, 3)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta = [0. 1.57079633 3.14159265]\n", "sin(theta) = [0.0000000e+00 1.0000000e+00 1.2246468e-16]\n", "cos(theta) = [ 1.000000e+00 6.123234e-17 -1.000000e+00]\n", "tan(theta) = [ 0.00000000e+00 1.63312394e+16 -1.22464680e-16]\n" ] } ], "source": [ "print(\"theta = \", theta)\n", "print(\"sin(theta) = \", np.sin(theta))\n", "print(\"cos(theta) = \", np.cos(theta))\n", "print(\"tan(theta) = \", np.tan(theta))\n", "# ---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exponentials and Logarithms" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "x = np.array([1, 2, 3])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 4, 8])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# exponentiate a scalar\n", "2**x" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.71828183, 7.3890561 , 20.08553692])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# exponential function e^x\n", "np.exp(x)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0.69314718, 1.09861229])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# natural logarithm hashtag best logarithm\n", "np.log(x)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0.30103 , 0.47712125])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# base 10 and base 2 logarithms\n", "# \n", "\n", "np.log2(x)\n", "np.log10(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### NaN\n", "\n", "When `numpy` performs an illegal mathematical operation, it will generate the value `np.nan` (for Not A Number). A common example is computing the logarithm of negative numbers. **Warnings** are generated in this case. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":2: RuntimeWarning: invalid value encountered in log\n", " x, np.log(x)\n" ] }, { "data": { "text/plain": [ "(array([-1, -2]), array([nan, nan]))" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.array([-1, -2])\n", "x, np.log(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NaN values propagate: any operation involving an NaN will generate more NaNs in the corresponding entries: " ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1: RuntimeWarning: invalid value encountered in log\n", " y = np.log(x)\n" ] }, { "data": { "text/plain": [ "(array([nan, nan]), array([nan, nan]))" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = np.log(x)\n", "y, y + 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A similar case occurs when we try to divide by zero. In this case, we get `np.inf` (for infinity): " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1: RuntimeWarning: divide by zero encountered in true_divide\n", " z = np.array([1, 1]) / np.array([0, 0])\n" ] }, { "data": { "text/plain": [ "array([inf, inf])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = np.array([1, 1]) / np.array([0, 0])\n", "z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`np.inf` values also propagate, e.g. `1 + np.inf = np.inf`. However, we can divide by `np.inf` values: " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0.])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting Functions\n", "\n", "We haven't yet formally introduced data visualization tools in Python. As a quick preview, let's see how to use vectorized `numpy` to easily plot mathematical functions. " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Parabola" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXhU5d3/8fc3O1lIgCQQshCWsENYwiKggFoFFXFFkbogilSp2qebffqr9qk+drG21qpFVMQVpIqVIhQ3FGUP+w6BrCRAICSE7Mncvz8y9ElDSCYwkzPL93VdXCRzzsx8PBk/OZzlvsUYg1JKKc/nZ3UApZRSzqGFrpRSXkILXSmlvIQWulJKeQktdKWU8hIBVr1xdHS0SU5OturtlVLKI23ZsuWkMSamqWWWFXpycjLp6elWvb1SSnkkEcm+0DI95KKUUl5CC10ppbyEFrpSSnkJLXSllPISWuhKKeUlWix0EVkgIidEZPcFlouIvCgiGSKyU0SGOT+mUkqpljiyh74QmNTM8slAiv3PbOBvlx5LKaVUa7VY6MaYNUBRM6tMBd429TYAUSIS56yAjWWcOMtv/rmX6lqbq95CKaVc5i9fHGLjkVMueW1nHEOPB3IbfJ9nf+w8IjJbRNJFJL2wsPCi3iy3qJwFazP5av/xi3q+UkpZJedUOX/+4iAbM5vbR754zih0aeKxJmfNMMbMN8akGWPSYmKavHO1RVf0jqFL+xA+2Jzb8spKKeVG/r4lFz+B24YnuOT1nVHoeUBig+8TgHwnvG6T/P2E29MS+OZgIfnFFa56G6WUcqraOht/T8/jit4xdI1q55L3cEahLwPusV/tMhooMcYUOOF1L2haWiI2Ax9uyXPl2yillNOsOVTIsTOV3DkiseWVL5Ijly0uAtYDfUQkT0RmicgcEZljX2UFcATIAF4DHnZZWrvEjqGM6xXNkvRcbDadE1Up5f4+2JxLdHgQV/bt7LL3aHG0RWPM9BaWG+ARpyVy0LQRiTy6aBvrDp9iXEp0W7+9Uko57ERpJV/uO8H947oTFOC6+zk99k7Ra/p3Jio0kMWbc6yOopRSzVq69Si1NsO0NNcdbgEPLvSQQH9uGhLPZ3uOc7qs2uo4SinVJGMMSzbnktatA71iw136Xh5b6AB3jkykus7G0m1HrY6ilFJN2pRZxJGTZdzhwpOh53h0offt0p6hSVEs2pRD/aF8pZRyL4s25RAREsANg7u6/L08utABpo9IIuPEWbZkn7Y6ilJK/Yfi8mpW7D7GTUPiaRfk7/L38/hCvyE1jvDgAN7fpCdHlVLuZenWo1TX2pg+MqlN3s/jCz00KICpQ7ry6c4CSsprrI6jlFJA/cnQxZtzSE2Mon/X9m3ynh5f6ADTRyZRVWvjH9v15KhSyj1szTnNweNnmd4GJ0PP8YpCHxgfyaD4SD05qpRyG4s25RIW5M+UVNefDD3HKwod6vfS9x8rZVtusdVRlFI+rqSihuU785k6NJ6w4BZvyHcaryn0G4d0JSzIn/c36slRpZS1/rHtKJU1NqaPaJuToed4TaGHBwcwdWg8/9yRrydHlVKWMcbw3sZsUhMiGZQQ2abv7TWFDnCX/eToR1t1WF2llDXSs+tPhs4Y1a3N39urCn1gfCRDEqN4X0+OKqUs8t6G7Po7Q1NdNrXyBXlVoQPcNar+ztFNLpqzTymlLqSorP7O0FuGxhMa1HYnQ8/xukKfMrgrESF656hSqu19tCWP6lobd1lwuAW8sNDbBflz67AEVu46xqmzVVbHUUr5CJvN8P6mHEYkd6BPlwhLMnhdoQPMGJVEdZ2Nv+uco0qpNrLu8CkyT5Zx16i2vVSxIa8s9JTOEYzu0ZH3NmZTp3OOKqXawDsbsugYFsR1g9r+ZOg5XlnoAHePTia3qII1BwutjqKU8nIFJRV8vvc409ISCQ5w/TC5F+K1hX7NgM7ERATzzoZsq6Mopbzcoo05GOoP91rJaws90N+P6SOTWH3gBLlF5VbHUUp5qepaG4s25zKxTyyJHUMtzeK1hQ4wfWQifiK8p+O7KKVc5LO9xygsreLu0dZcqtiQVxd6XGQ7vtevM0vSc6msqbM6jlLKC72zPpvEju24oneM1VG8u9AB7r6sW/3dW7sKrI6ilPIyB4+XsjGziLtGdsPfT6yO4/2FPqZnJ3rEhPHWej05qpRyrrfWZREU4McdbTgrUXO8vtBFhHsvS2ZHbjHbdfILpZSTlFTUsHTrUW5M7UrHsCCr4wA+UOgAtwyLJyzIn7fXZ1kdRSnlJT7akkdFTR33XpZsdZR/84lCjwgJ5NbhCSzfUaDjuyilLpnNZnhnQzbDkqLafBKL5vhEoQPcc1k3qutsLN6ca3UUpZSH+zbjJJkny7h3TLLVUf6DzxR6r9gIxvWK5r0N2dTW2ayOo5TyYG+tyyI6PJjJA60bt6UpDhW6iEwSkQMikiEiTzSxPFJE/ikiO0Rkj4jMdH7US3fPZd3IL6nk873HrY6ilPJQ2afKWH3gBHeNSiIowL32iVtMIyL+wMvAZKA/MF1E+jda7RFgrzEmFZgAPC8i7nHat4Gr+nUmoUM73lyXZXUUpZSHemtdNv4ilo/b0hRHfr2MBDKMMUeMMdXAYmBqo3UMECEiAoQDRUCtU5M6gb+fcM9l3diUWcSe/BKr4yilPMzZqlr+np7LdYPi6Nw+xOo453Gk0OOBhmcS8+yPNfQS0A/IB3YBjxljzjtQLSKzRSRdRNILC60Z1vaOtCTaBfqzcG2WJe+vlPJcH23Jo7Sqlpljk62O0iRHCr2p+1kbzxpxLbAd6AoMAV4SkfbnPcmY+caYNGNMWkyMNeMeRIYGcuvweD7Zka+XMCqlHGazGRauy2JIYhRDkzpYHadJjhR6HtDwvtYE6vfEG5oJLDX1MoBMoK9zIjrffWOSqa618b6OwqiUctA3BwvJPFnmtnvn4FihbwZSRKS7/UTnncCyRuvkAFcBiEhnoA9wxJlBnalXbASXp0TzzoZsqmv1EkalVMsWrM0kNsL9LlVsqMVCN8bUAnOBVcA+YIkxZo+IzBGROfbVngbGiMgu4Evg58aYk64K7Qz3j+3OidIqVu7WURiVUs3LOFHKt4dOcvfobm53qWJDAY6sZIxZAaxo9Ni8Bl/nA9c4N5prje8dQ4+YMN74LpMbU7tSf4GOUkqd743v6kdVvMsNL1VsyH1/1biYn58wc2x3duaVkJ592uo4Sik3VVRWzdKtedwyNJ5O4cFWx2mWzxY6wK3D4okKDeSNbzOtjqKUclPvb8ymqtbG/eO6Wx2lRT5d6KFBAdw1MonP9h4j55ROJK2U+k9VtXW8tT6bK3rH0LtzhNVxWuTThQ5wz2XJ+Inw5jrdS1dK/aflOwooLK1ilgfsnYMWOl0iQ5iS2pUlm3M5U1ljdRyllJswxvDGd5mkxIZzRUq01XEc4vOFDjBrXHfKquv4YJOOla6UqrfhSBF7C84wa1x3j7kKTgsdGBgfyegeHXlzbSY1Ola6Ugp47dsjdAoL4qahjYeucl9a6Hazr+hBfkklK3bpjUZK+bpDx0v5av8J7h2TTEigv9VxHKaFbjehdyy9YsOZv+YIxjQee0wp5Ute/zaTkEA/vj+6m9VRWkUL3c7PT3jw8u7syT/D+sOnrI6jlLLIidJKPt52lNuHJ9IxzO3m6WmWFnoDU4fEEx0ezPxv3XZcMaWUi729Lpsam81jLlVsSAu9gZBAf+4b042vDxRy4Fip1XGUUm2svLqWdzZkc23/LiRHh1kdp9W00BuZMaob7QL9mb9G99KV8jVLNudSUlHDg1d43t45aKGfp0NYEHeMSGTZjqMUlFRYHUcp1UZq6my89m0mad06MLxbR6vjXBQt9CbMGtcdm0EH7VLKh3y6s4CjxRXMGd/T6igXTQu9CYkdQ5kyOI5Fm3IoKdfhAJTydsYY5n1zmJTYcK7sG2t1nIumhX4Bs6/oSVl1He9uzLY6ilLKxb45WMj+Y6XMvqIHfn6ecZt/U7TQL6B/1/aM7x3Dm2szqaypszqOUsqFXv3mCHGRIUwd4jm3+TdFC70Zc8b35OTZaj7ammd1FKWUi+zILWb9kVPMGtfdrecLdYRnp3ex0T06kpoYxavfHKFWB+1Syiu98nUG7UMCuHOke88X6ggt9GaICI9M6ElOUTmf6qBdSnmdQ8dLWbXnOPeN7U54cIDVcS6ZFnoLru7Xmd6dw3ll9WFsNh20Sylv8revDxMa5M/MMclWR3EKLfQW+PkJP5jQkwP24TSVUt4ht6icT3bkM31kEh08bBCuC9FCd8CUwV1J6NCOl1Zn6NC6SnmJ+WuO4Cfw4OU9rI7iNFroDgjw92PO+J5st58NV0p5thOllXyQnsttwxPoEhlidRyn0UJ30G3DE4iJCObl1RlWR1FKXaI3vs2kts7GQ1d47m3+TdFCd1BIoD+zL+/B2oxTbMk+bXUcpdRFKiqr5p0N2UxJ7eqRQ+Q2Rwu9FWaMTqJjWBAvfXXI6ihKqYv05tpMKmrqmDuxl9VRnE4LvRVCgwKYNa47qw8UsiuvxOo4SqlWKqmoYeHaLCYP7EJK5wir4zidFnor3XNZN9qHBPBX3UtXyuO8tS6L0qpaHvHCvXNwsNBFZJKIHBCRDBF54gLrTBCR7SKyR0S+cW5M9xEREsjMsd35bO9x9hWcsTqOUspBZ6tqWbA2k6v7xTKga6TVcVyixUIXEX/gZWAy0B+YLiL9G60TBbwC3GiMGQDc7oKsbuN++23CL+kVL0p5jHfWZ1NcXsPcK1OsjuIyjuyhjwQyjDFHjDHVwGJgaqN17gKWGmNyAIwxXn1LZWRoIPeNSWbFrgIOHtfJpJVyd2VVtbz27RHG945hSGKU1XFcxpFCjwdyG3yfZ3+sod5ABxH5WkS2iMg9Tb2QiMwWkXQRSS8sLLy4xG5i1rjuhAUF8OKXeixdKXf3zoZsisqqeexq7907B8cKvanpOxrf/x4ADAeuB64FfiUivc97kjHzjTFpxpi0mJiYVod1Jx3CgrhvTDKf6l66Um6trKqW+Wvq986HJXWwOo5LOVLoeUBig+8TgPwm1vmXMabMGHMSWAOkOiei+9K9dKXcn6/snYNjhb4ZSBGR7iISBNwJLGu0zifA5SISICKhwChgn3Ojuh/dS1fKvfnS3jk4UOjGmFpgLrCK+pJeYozZIyJzRGSOfZ19wL+AncAm4HVjzG7XxXYf5/bS/6J76Uq5nbfX+87eOdQf+26RMWYFsKLRY/Maff8c8JzzonmGDmFBzBybzF+/ymDuxDP0i2tvdSSlFFBaWcOraw4zoY9v7J2D3inqFA+M60FESAB/+vyg1VGUUnZvrs2iuLyGH3+vj9VR2owWuhNEhgby4OU9+HzvcXbmFVsdRymfV1Jew2vfHuGa/p0ZlOCdd4U2RQvdSWaOTaZDaCDPf6Z76UpZ7bVvj3C2qpb/uua8q6e9mha6k0SEBPLQ+J58c7CQ9Kwiq+Mo5bNOna1iwdpMrh8UR98uvnVOSwvdie65rBvR4UH88bMDOveoUhaZ981hKmvqePxq39o7By10pwoNCuCRib3YcKSIbw+dtDqOUj6noKSCt9Znc/PQBHrFhlsdp81poTvZXaOSiI9qx3OrdC9dqbb24peHMMbwuI9cd96YFrqTBQf48/jVKew6WsLK3cesjqOUzzhSeJYl6XnMGNWNxI6hVsexhBa6C9wyrP6fe89/doDaOpvVcZTyCX/6/CDBAX5eOxuRI7TQXcDfT/jJNb05XFjG0m1HrY6jlNfbfbSE5TsLuH9sd2Iigq2OYxktdBe5dkAXUhMieeHzg1TW1FkdRymv9odVB4hsF8iDV/SwOoqltNBdRET4+eS+5JdU8ta6LKvjKOW11macZM3BQuZO7EVku0Cr41hKC92FxvSMZnzvGF5enUFJeY3VcZTyOjab4Xcr9xMf1Y67L+tmdRzLaaG72BOT+1JaVcsrX+uE0ko52/JdBew6WsJ/fa83IYH+VsexnBa6i/WLa8/NQ+N5c10WR4srrI6jlNeorrXxx1UH6NslgpuGNp7m2DdpobeBH19TP3znn3TgLqWc5r2N2eQUlfPE5L74+zU19bHv0UJvA/FR7Zg5Jpml2/LYk19idRylPF5JRQ0vfnmIMT07Mb63Z08470xa6G3k4Ym9iGoXyP9+uk+HBFDqEr28OoPiihp+eX0/RHTv/Bwt9DYS2S6Qx65KYd3hU6w+cMLqOEp5rNyichauzeLWYQkM6Oo7k1c4Qgu9Dc0Y3Y3u0WE8u2K/Dgmg1EX6/b/24+cHP7nGd6aWc5QWehsK9Pfjicl9yThxlkWbc62Oo5TH2ZpzmuU7C5h9eQ+6RIZYHcftaKG3sWv6d2ZU9478+fODnKnUm42UcpQxhmeW7yUmIpiHxve0Oo5b0kJvYyLCr27oz+nyav765SGr4yjlMZbtyGdrTjE/vbYPYcEBVsdxS1roFhgYH8m04YksXJfFkcKzVsdRyu2VV9fyu5X7GRQfyW3DEqyO47a00C3yk2v7EBzgz/9+us/qKEq5vXnfHKGgpJInp/THT28iuiAtdIvERAQz98pefLn/BGsOFlodRym3dbS4gle/OcwNg+MYkdzR6jhuTQvdQjPHJtOtUyhPL99LjV7GqFSTfrdyPwC/uK6fxUncnxa6hYID/Pl/1/fn0ImzvL0+2+o4SrmdDUdO8c8d+Tw0vifxUe2sjuP2tNAtdnW/WMb3juGFzw9yorTS6jhKuY3aOhu/XraH+Kh2PDxBL1N0hBa6xUSEp6b0p7K2jt+vPGB1HKXcxrsbstl/rJRf3dBfxzp3kBa6G+gRE84Dl/fgo615bMk+bXUcpSx38mwVz39+kMtTorl2QGer43gMhwpdRCaJyAERyRCRJ5pZb4SI1InIbc6L6BvmTuxFl/YhPLVsN3U2HY1R+bY//Gs/FdV1PDVlgI6m2AotFrqI+AMvA5OB/sB0Eel/gfV+D6xydkhfEBYcwC+v78fuo2d4b6OeIFW+a0t2EUvS85g1rju9YsOtjuNRHNlDHwlkGGOOGGOqgcXA1CbW+yHwEaBjw16kGwbHMa5XNM+tOqAnSJVPqq2z8cuPd9M1MoRHr0qxOo7HcaTQ44GGQwPm2R/7NxGJB24G5jX3QiIyW0TSRSS9sFBvpmlMRPjN1AFU1dh4Vu8gVT5o4bos9h8r5ckpA3S8lovgSKE3dQCr8UHeF4CfG2PqmnshY8x8Y0yaMSYtJkanjWpKj5hw5ozvwT+257Pu8Emr4yjVZgpKKvjz5weZ2CdGT4ReJEcKPQ9IbPB9ApDfaJ00YLGIZAG3Aa+IyE1OSeiDHp7Yi8SO7fjVP3ZTVdvs70ilvMbTy/dSazP8z40D9UToRXKk0DcDKSLSXUSCgDuBZQ1XMMZ0N8YkG2OSgQ+Bh40x/3B6Wh8REujPb6YO5HBhGfO+PmJ1HKVc7st9x1mx6xg/vLIXSZ1CrY7jsVosdGNMLTCX+qtX9gFLjDF7RGSOiMxxdUBfNbFPLFNSu/Ly6gwO6xC7youVVdXyq3/spnfncGZfoXeEXgqHrkM3xqwwxvQ2xvQ0xvyv/bF5xpjzToIaY+4zxnzo7KC+6Mkb+hMS6Mcvlu7CptemKy/1/GcHyS+p5Le3DCIoQO91vBS69dxYTEQw/31dPzZlFvH3LToHqfI+O/OKWbguk++PTmJ4Nx0a91Jpobu5aWmJjOzekWdX7Ndr05VXqamz8cRHu4gOD+Znk/paHccraKG7OT8/4be3DKKipo6nPtljdRylnGb+miPsLTjDb6YOpH1IoNVxvIIWugfoGRPO41ensHL3MVbsKrA6jlKXLONEKX/54hDXD4pj0sAuVsfxGlroHmL25T0YGN+eJz/ZzemyaqvjKHXR6myGn324k9Bgf3594wCr43gVLXQPEeDvxx9uTaW4vIanl++1Oo5SF+2tdVlszSnmyRv6ExMRbHUcr6KF7kH6d23PDyb0ZOm2o3yx97jVcZRqtayTZTy36gAT+sRw89D4lp+gWkUL3cPMvbIXfbtE8IuPd1FcrodelOeosxl+8vcdBPjXn+jX2/udTwvdwwQH+PP8tFROl1Xz1DK96kV5jgXfZZKefZpfTxlAXKRO+OwKWugeaEDXSH54ZQqfbM/nX7v1qhfl/jJOlPLcZwe4ul9nbhmmh1pcRQvdQz08sSeD4iP55ce7OXm2yuo4Sl1QTZ2NHy/ZQWiQP8/eoiMpupIWuocK9Pfj+WmplFbV8sRHOzFGx3pR7umlrzLYkVfCMzcNJDYixOo4Xk0L3YP17hzBzyf15Yt9J1i8Wcd6Ue5nW85pXlqdwc1D47lhcFer43g9LXQPN3NMMmN7deLp5XvJOllmdRyl/q2sqpYffbCdLu1D+J+pegNRW9BC93B+fsIfb08lwE94/IPt1NbZrI6kFADPfLqP7KJynp+WqmO1tBEtdC8QF9mOZ28ZxPbcYl788pDVcZTiX7uPsWhTDrMv78HoHp2sjuMztNC9xA2Du3L78AT+ujqD9YdPWR1H+bD84gp+/tFOBidE8uNr+lgdx6dooXuRX984gO6dwvjRB9t1AC9liTqb4fHF9Yf+XrxzqM5A1MZ0a3uRsOAAXpw+lKKyan6mlzIqC7z0VQabsop45uaBJEeHWR3H52ihe5mB8ZH8fHJfPt97nIXrsqyOo3zI+sOn+MuXB7l5aDw3D02wOo5P0kL3QvePTebqfp15dsU+tucWWx1H+YDC0ioeXbyN5OgwnrlpoNVxfJYWuhcSEZ6/PZXYiBAeeW8rJeU1VkdSXqzOZnj8g22UVtbwyoxhhAUHWB3JZ2mhe6nI0EBenjGME6WV/PjvO/R4unKZF788xNqMU/zmxoH07dLe6jg+TQvdiw1JjOIXk/vxxb7jzPvmiNVxlBf65mAhL351iFuGxXN7mh43t5oWupebOTaZ6wfH8dyq/azNOGl1HOVFcovKeXTRNvp0juCZm3QURXeghe7lRIQ/3DqYnjHh/HDRNo4WV1gdSXmBypo6HnpnC8YYXr17OKFBetzcHWih+4Cw4ABevXs4NbU2fvDuFipr6qyOpDyYMYZffrybvQVneOHOIXTrpNebuwstdB/RIyac56elsjOvhF9+vFtPkqqLtnBdFh9tzeOxq1K4sm9nq+OoBrTQfcg1A7rw+NUpfLQ1jze+y7Q6jvJA3x4q5Onle/le/848dlWK1XFUI1roPubRK1OYPLALz67YxzcHC62OozxI1sky5r6/jV6x4fz5jiH4+elJUHfjUKGLyCQROSAiGSLyRBPLZ4jITvufdSKS6vyoyhnOjZ/eu3MEc9/fyuHCs1ZHUh7gTGUND7ydjgi8fs8IwvXmIbfUYqGLiD/wMjAZ6A9MF5H+jVbLBMYbYwYDTwPznR1UOU9YcACv3ZNGkL8f9y/cTJGOzKiaUVNn45H3tpJ1soxXZgwjqVOo1ZHUBTiyhz4SyDDGHDHGVAOLgakNVzDGrDPGnLZ/uwHQOwzcXGLHUObfk0ZBSSWz306nqlavfFHnM8bw1LI9fHvoJM/ePIgxPaOtjqSa4UihxwMNZyDOsz92IbOAlU0tEJHZIpIuIumFhXr81mrDu3XgT9NSSc8+zc8+1OF21fle/zaT9zfm8IMJPZk2ItHqOKoFjhwIa+rMR5P/54vIROoLfVxTy40x87EfjklLS9P2cAM3DO5K9qlynlt1gMQOofzkWp1hRtVbsauAZ1fu4/pBcfxUZx7yCI4Ueh7Q8FdzApDfeCURGQy8Dkw2xugcaB7k4Qk9yS0q56XVGXSODOHu0d2sjqQstuHIKR5fvJ1hSR14flqqXtHiIRwp9M1Aioh0B44CdwJ3NVxBRJKApcDdxpiDTk+pXEpEeOamgRSWVvHkJ7uJCQ9i0sA4q2Mpi+w/doYH304nsWM73rg3jZBAf6sjKQe1eAzdGFMLzAVWAfuAJcaYPSIyR0Tm2Fd7EugEvCIi20Uk3WWJlUsE+Pvx17uGkpoQxaOLt7PxiP4jyxcdLa7gvgWbCQ3y5637RxIVGmR1JNUKYtWJsLS0NJOerr3vborKqrlt3jpOnKli0YOjGZQQaXUk1UYKS6uY9up6Tp6tYslDl9EvTsc2d0cissUYk9bUMr1TVP2HjmFBvPfAKCLbBXLvm5vIOFFqdSTVBkrKa7j7jY0cK6lk4cwRWuYeSgtdnScush3vPjAKPxFmvL6R3KJyqyMpFyqrqmXmwk0cKSxj/j3DGd6to9WR1EXSQldN6h4dxrsPjKSyxsb01zaQd1pL3RuVV9cyc+FmduSV8OL0oVyeEmN1JHUJtNDVBfXt0p53Z42ipKKG6a9tIF8nx/AqFdV1zFqYTnpWEX++YwiTBnaxOpK6RFroqlmDEiJ5d9YoisvqS72gREvdG1TW1PHg2+lszDzFn6YN4cbUrlZHUk6gha5alJoYxVuzRnLqbDV3vLpBj6l7uLKqWma+uZm1h0/y3G2p3DS0uZE8lCfRQlcOGZbUgXcfGEVxeTV3vLqezJNlVkdSF+FMZQ33LNjEpqwi/jxtCLcO13H0vIkWunLYkMQoFs0eTWWtjWmvrufAMb2k0ZOcLqtmxmsb2ZlXzEvTh+qeuRfSQletMqBrJB/MHo0A015dz5bsIqsjKQccLa7gtnnrOHC8lFfvHs7kQTq0gzfSQletltI5gg/njKFDaCAzXt/IV/uPWx1JNePg8VJufWUdJ0qreOf+kTqxsxfTQlcXJalTKB/+YAwpsRE8+PYWlqTntvwk1eY2ZxVx+7z11BnDkocuY1SPTlZHUi6kha4uWnR4MItmj2ZMz0787MOdPLdqPzabDnPvLj7ZfpQZr22kY1gQS38wRm/n9wFa6OqShAcHsOC+Edw5IpGXVx/m0cXbqKzR6eysZIzhxS8P8dji7QxNiuLjh8eQ2FHnAfUFOnW3umSB/n789pZBJEeH8buV+8k7XcGrdw+nc/sQq6P5nIrqOp5YupNPtudzy7B4fnfLYIICdL/NV+hPWjmFiDBnfE/mfX84B4+XcsNfv2NL9umWn6icJu90ObfNW8eyHfn89No+PH97qpa5j9GftijidF8AAAu0SURBVHKqSQO78PHDY2kX6M+d89fz/sYcnXy6DazLOMmNL60lp6icBfeO4JGJvRDRaeN8jRa6cro+XSJYNncsl/WM5r8/3sWPPthOWVWt1bG8Up3N8MIXB5nxRv3Jz08eGcvEvrFWx1IW0UJXLhEVGsTC+0bw4+/1ZtmOfKa89B37j52xOpZXKSyt4t4Fm3jhi0PcPCSeTx4ZS4+YcKtjKQtpoSuX8fMTfnhVCu8+MIrSylpufGktb3yXqZc2OsHne48z6YU1bM4q4ve3DuL5aamEBes1Dr5OC1253Jie0ax87HKuSInm6eV7uXvBRh2G9yKVVdXyi6W7ePDtdDq3D+GfPxzHHSOS9Hi5ArTQVRuJDg/mtXvS+O0tg9iaXcw1f17DB5v1hGlrfHfoJNe+sIbFm3OYM74nHz8yht6dI6yOpdyIFrpqMyLC9JFJrHzscvrHtefnH+1ixusbyTml46s3p6S8hp99uIPvv7GRQH8/Pph9GU9M7ktwgL/V0ZSbEav2kNLS0kx6erol762sZ7MZFm3O4bcr9lNTZ+MHE3oyZ3xPQgK1pM6x2Qwfbs3j9yv3U1xRw+wrevDYVSm6jXyciGwxxqQ1tUzPoihL+PkJM0Z148q+sTzz6T5e+OIQS7ce5Vc39OfqfrE+f0x4V14JTy3bzdacYoYlRfHW1IEMjI+0OpZyc7qHrtzC2oyTPLVsDxknzjKye0f++7p+DEmMsjpWm8stKuePnx3gk+35dAoL4onJfbl1WAJ+fr79C079n+b20LXQlduoqbOxeHMuf/niICfPVnPdoC48elUKfbt4/yiBx89U8revD/P+xhz8/GDWuO48NL4n7UMCrY6m3IwWuvIoZ6tqmb/mCAu+y+RsVS2TBnRh7pW9vPKQQ35xBfO+OczizbnU2Qy3DUvgR9/rTZdIHdhMNU0LXXmk4vJqFqzN4s21mZRW1jKmZydmjevOxD6xHn8IYntuMW98l8mKXQUIcHtaAg9P6KXD3KoWaaErj1ZSUcOiTTm8tS6LgpJKkjuFcseIJG4dHk9shOfsyZZV1bJ8Zz6LNuWyPbeYiOAA7hyZyH1juxMf1c7qeMpDaKErr1BTZ2Pl7mO8uyGbTZlF+PsJE/vEMiU1jqv7dXbLW99r6mysO3yKf+7IZ8WuAsqr60iJDeeuUUncnpZIuBtmVu5NL1tUXiHQ348bU7tyY2pXDheeZUl6Lh9vPcoX+44TEujHxD6xTOwby4TeMcRaOLnGmcoa1h46yeoDJ/h873FOl9cQERzADYPjuGNEEsOSonz+skzlGg7toYvIJOAvgD/wujHmd42Wi335dUA5cJ8xZmtzr6l76MoZbDZDevZplu/MZ9WeYxw/UwVAv7j2jOrekbTkDgzv1oEu7UNcVqLF5dVsyylmc1YRm7OK2JZTTK3NEBESwJV9Y7lhcFcuT4nWG4KUU1zSIRcR8QcOAt8D8oDNwHRjzN4G61wH/JD6Qh8F/MUYM6q519VCV85mjGH/sVJWHzjBd4dOsi2nmAr7/KYdw4LoFxdBn87tSY4OJbFDKAkd2hEdHkxku8BmT7IaYyitqqXobDVHiyvIKSonp6icg8dK2VdwhvySSgAC/ISB8ZGM6dmJCX1iGZYURYC/jq6hnOtSD7mMBDKMMUfsL7YYmArsbbDOVOBtU//bYYOIRIlInDGm4BKzK+UwEaFfXHv6xbXn4Qm9qKmzsa/gDFuzT7OvoJT9x87w/qZsKmts//E8P4H27QIJCfAnKMCPQH+h1maoqbVRVWujpKKG2kZD/gb4CT1jwhnRvSN9u7RnSGIUQxKjaBeke+HKOo4UejyQ2+D7POr3wltaJx74j0IXkdnAbICkpKTWZlWqVQL9/RicEMXghP+749QYQ+HZKnKLysk7XUFRWTWny6oprqihsqaOmjpDdZ2NAD8hyN+PoAA/okID6RAaRIfQILpGtSOxYzviItvh7+GXTirv40ihN/WpbXycxpF1MMbMB+ZD/SEXB95bKacSEWIjQoiNCGF4N6vTKOVcjhzgywMSG3yfAORfxDpKKaVcyJFC3wykiEh3EQkC7gSWNVpnGXCP1BsNlOjxc6WUalstHnIxxtSKyFxgFfWXLS4wxuwRkTn25fOAFdRf4ZJB/WWLM10XWSmlVFMcurHIGLOC+tJu+Ni8Bl8b4BHnRlNKKdUaepGsUkp5CS10pZTyElroSinlJbTQlVLKS1g2fK6IFALZF/n0aOCkE+M4i7vmAvfNprlaR3O1jjfm6maMiWlqgWWFfilEJP1Cg9NYyV1zgftm01yto7lax9dy6SEXpZTyElroSinlJTy10OdbHeAC3DUXuG82zdU6mqt1fCqXRx5DV0opdT5P3UNXSinViBa6Ukp5CbctdBG5XUT2iIhNRC54eY+ITBKRAyKSISJPNHi8o4h8LiKH7H93cFKuFl9XRPqIyPYGf86IyOP2Zb8WkaMNll3XVrns62WJyC77e6e39vmuyCUiiSKyWkT22X/mjzVY5tTtdaHPS4PlIiIv2pfvFJFhjj7Xxblm2PPsFJF1IpLaYFmTP9M2yjVBREoa/HyedPS5Ls710waZdotInYh0tC9z5fZaICInRGT3BZa79vNljHHLP0A/oA/wNZB2gXX8gcNADyAI2AH0ty/7A/CE/esngN87KVerXtee8Rj1NwMA/Br4iQu2l0O5gCwg+lL/u5yZC4gDhtm/jqB+UvJzP0enba/mPi8N1rkOWEn9LFyjgY2OPtfFucYAHexfTz6Xq7mfaRvlmgAsv5jnujJXo/WnAF+5envZX/sKYBiw+wLLXfr5cts9dGPMPmPMgRZW+/cE1saYauDcBNbY/37L/vVbwE1Oitba170KOGyMudi7Yh11qf+9lm0vY0yBMWar/etSYB/1c9I6W3Ofl4Z53zb1NgBRIhLn4HNdlssYs84Yc9r+7QbqZwVztUv5b7Z0ezUyHVjkpPduljFmDVDUzCou/Xy5baE76EKTUwN0NvZZk+x/xzrpPVv7undy/odprv2fWwucdWijFbkM8JmIbJH6Sbtb+3xX5QJARJKBocDGBg87a3s193lpaR1HnuvKXA3Non4v75wL/UzbKtdlIrJDRFaKyIBWPteVuRCRUGAS8FGDh121vRzh0s+XQxNcuIqIfAF0aWLRL40xnzjyEk08dsnXYTaXq5WvEwTcCPyiwcN/A56mPufTwPPA/W2Ya6wxJl9EYoHPRWS/fa/iojlxe4VT/z/e48aYM/aHL3p7NfUWTTzm6ITnLvmstfCe568oMpH6Qh/X4GGn/0xbkWsr9YcTz9rPb/wDSHHwua7Mdc4UYK0xpuFes6u2lyNc+vmytNCNMVdf4ks0Nzn1cRGJM8YU2P9Jc8IZuUSkNa87GdhqjDne4LX//bWIvAYsb8tcxph8+98nRORj6v+ptwaLt5eIBFJf5u8ZY5Y2eO2L3l5NuJQJz4MceK4rcyEig4HXgcnGmFPnHm/mZ+ryXA1+8WKMWSEir4hItCPPdWWuBs77F7ILt5cjXPr58vRDLs1NYL0MuNf+9b2AI3v8jmjN65537M5eaufcDDR5NtwVuUQkTEQizn0NXNPg/S3bXiIiwBvAPmPMnxotc+b2upQJzx15rstyiUgSsBS42xhzsMHjzf1M2yJXF/vPDxEZSX2nnHLkua7MZc8TCYynwWfOxdvLEa79fLniTK8z/lD/P28eUAUcB1bZH+8KrGiw3nXUXxVxmPpDNece7wR8CRyy/93RSbmafN0mcoVS/8GObPT8d4BdwE77DyyurXJRfwZ9h/3PHnfZXtQfPjD2bbLd/uc6V2yvpj4vwBxgjv1rAV62L99FgyusLvRZc9J2ainX68DpBtsnvaWfaRvlmmt/3x3Un6wd4w7by/79fcDiRs9z9fZaBBQANdT316y2/Hzprf9KKeUlPP2Qi1JKKTstdKWU8hJa6Eop5SW00JVSyktooSullJfQQldKKS+hha6UUl7i/wNhAHNJ3jF57QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-1, 1, 101)\n", "plt.plot(x, x**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exponential and Logarithm" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":2: RuntimeWarning: divide by zero encountered in log\n", " plt.plot(x, np.log(x), label = r\"$y = \\log(x)$\")\n", ":2: RuntimeWarning: invalid value encountered in log\n", " plt.plot(x, np.log(x), label = r\"$y = \\log(x)$\")\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, np.exp(x), label = r\"$y = e^x$\")\n", "plt.plot(x, np.log(x), label = r\"$y = \\log(x)$\")\n", "plt.legend()\n", "# warning comes from trying to compute np.log(-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2-d Plotting\n", "\n", "It's easy to compute functions over multi-dimensional arrays. An especially common case is when we want to compute a function over one or more 2d arrays and then plot the result. Here's a simple example. We'll go into more detail on how to obtain finer control when we go more deeply into plotting in a future lecture. " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 0.99865472, 0.99336989, ..., 1.04331654, 1.05373415,\n", " 1.06023523],\n", " [1.06279659, 1.0614106 , 1.05608519, ..., 1.10599366, 1.11636862,\n", " 1.12282672],\n", " [1.12534491, 1.12391573, 1.11854727, ..., 1.168183 , 1.17851284,\n", " 1.18492549],\n", " ...,\n", " [0.8113604 , 0.80618247, 0.79708749, ..., 0.86536236, 0.87197752,\n", " 0.87465351],\n", " [0.87338221, 0.86817112, 0.85904326, ..., 0.92798314, 0.93456276,\n", " 0.93720301],\n", " [0.93589596, 0.93064924, 0.92148603, ..., 0.99085636, 0.99739795,\n", " 1. ]])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# two 100x100 arrays\n", "x = np.reshape(np.linspace(0, 2*np.pi, 10000), (100, 100))\n", "y = np.reshape(np.linspace(0, 2*np.pi, 10000), (100, 100)).T\n", "\n", "# function of these arrays, also 100x100\n", "z = np.sin(x) + np.cos(y)\n", "z" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(z)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }