diff --git a/_images/774c0c53a1edfeb533e6940c2abf97431945fef9b1c9abb03b5e3f284205fc1b.png b/_images/774c0c53a1edfeb533e6940c2abf97431945fef9b1c9abb03b5e3f284205fc1b.png deleted file mode 100644 index 0f1a67a6..00000000 Binary files a/_images/774c0c53a1edfeb533e6940c2abf97431945fef9b1c9abb03b5e3f284205fc1b.png and /dev/null differ diff --git a/_images/ebd2ae94d8d5dfb90da758ca431e4ef320d7e07bc55d97a85c3ee10d91b96921.png b/_images/ebd2ae94d8d5dfb90da758ca431e4ef320d7e07bc55d97a85c3ee10d91b96921.png new file mode 100644 index 00000000..fb130dc2 Binary files /dev/null and b/_images/ebd2ae94d8d5dfb90da758ca431e4ef320d7e07bc55d97a85c3ee10d91b96921.png differ diff --git a/_sources/content/mooreslaw-tutorial.ipynb b/_sources/content/mooreslaw-tutorial.ipynb index cec13cf2..66257e0a 100644 --- a/_sources/content/mooreslaw-tutorial.ipynb +++ b/_sources/content/mooreslaw-tutorial.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "3e73cdb9", + "id": "261072e4", "metadata": {}, "source": [ "# Determining Moore's Law with real data in NumPy\n", @@ -45,7 +45,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "5685196f", + "id": "62713625", "metadata": {}, "outputs": [], "source": [ @@ -55,7 +55,7 @@ }, { "cell_type": "markdown", - "id": "a8f2f71e", + "id": "0712cfe9", "metadata": {}, "source": [ "**2.** Since this is an exponential growth law you need a little background in doing math with [natural logs](https://en.wikipedia.org/wiki/Natural_logarithm) and [exponentials](https://en.wikipedia.org/wiki/Exponential_function).\n", @@ -77,7 +77,7 @@ }, { "cell_type": "markdown", - "id": "8e71ceea", + "id": "032e226d", "metadata": {}, "source": [ "---\n", @@ -123,7 +123,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "ac6cfad0", + "id": "fb188676", "metadata": {}, "outputs": [], "source": [ @@ -134,7 +134,7 @@ }, { "cell_type": "markdown", - "id": "3a107b2f", + "id": "4d49a92a", "metadata": {}, "source": [ "In 1971, there were 2250 transistors on the Intel 4004 chip. Use\n", @@ -145,7 +145,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "b279f219", + "id": "82cc8253", "metadata": {}, "outputs": [ { @@ -166,7 +166,7 @@ }, { "cell_type": "markdown", - "id": "04cf1b38", + "id": "e905daa4", "metadata": {}, "source": [ "## Loading historical manufacturing data to your workspace\n", @@ -190,7 +190,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "82aa0a65", + "id": "4f07e1e8", "metadata": {}, "outputs": [ { @@ -216,7 +216,7 @@ }, { "cell_type": "markdown", - "id": "6e248e73", + "id": "9f540f3d", "metadata": {}, "source": [ "You don't need the columns that specify __Processor__, __Designer__,\n", @@ -235,7 +235,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "4b8cd672", + "id": "4f934c3c", "metadata": {}, "outputs": [], "source": [ @@ -244,7 +244,7 @@ }, { "cell_type": "markdown", - "id": "1d80a7ab", + "id": "f04b708a", "metadata": {}, "source": [ "You loaded the entire history of semiconducting into a NumPy array named\n", @@ -261,7 +261,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "af4e3726", + "id": "0993afc9", "metadata": {}, "outputs": [ { @@ -283,7 +283,7 @@ }, { "cell_type": "markdown", - "id": "510f6a83", + "id": "4907c320", "metadata": {}, "source": [ "You are creating a function that predicts the transistor count given a\n", @@ -301,7 +301,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "8cb733b5", + "id": "9f27b9c3", "metadata": {}, "outputs": [], "source": [ @@ -310,7 +310,7 @@ }, { "cell_type": "markdown", - "id": "1284b83d", + "id": "eb420dfd", "metadata": {}, "source": [ "## Calculating the historical growth curve for transistors\n", @@ -339,7 +339,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "d2f334ca", + "id": "9a1abcd9", "metadata": {}, "outputs": [], "source": [ @@ -348,7 +348,7 @@ }, { "cell_type": "markdown", - "id": "cdf0a91c", + "id": "92179aa3", "metadata": {}, "source": [ "By default, `Polynomial.fit` performs the fit in the domain determined by the\n", @@ -360,7 +360,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "a6322a5c", + "id": "04cff95c", "metadata": {}, "outputs": [ { @@ -384,7 +384,7 @@ }, { "cell_type": "markdown", - "id": "05eb5d4a", + "id": "aecb361d", "metadata": {}, "source": [ "The individual parameters $A$ and $B$ are the coefficients of our linear model:" @@ -393,7 +393,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "bdaef6f4", + "id": "7f95b50d", "metadata": {}, "outputs": [], "source": [ @@ -402,7 +402,7 @@ }, { "cell_type": "markdown", - "id": "337be84e", + "id": "358ad1e2", "metadata": {}, "source": [ "Did manufacturers double the transistor count every two years? You have\n", @@ -418,7 +418,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "108b5033", + "id": "2ec04562", "metadata": {}, "outputs": [ { @@ -435,7 +435,7 @@ }, { "cell_type": "markdown", - "id": "f6d9175e", + "id": "c166cd35", "metadata": {}, "source": [ "Based upon your least-squares regression model, the number of\n", @@ -466,7 +466,7 @@ }, { "cell_type": "markdown", - "id": "973c1361", + "id": "06d90227", "metadata": {}, "source": [ "In the next plot, use the\n", @@ -480,7 +480,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "a819e7b8", + "id": "fd5b0e9c", "metadata": {}, "outputs": [ { @@ -525,7 +525,7 @@ }, { "cell_type": "markdown", - "id": "82ff0db4", + "id": "35c1e71d", "metadata": {}, "source": [ "_A scatter plot of MOS transistor count per microprocessor every two years with a red line for the ordinary least squares prediction and an orange line for Moore's law._\n", @@ -564,7 +564,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "deea333e", + "id": "a8327ccc", "metadata": {}, "outputs": [ { @@ -577,7 +577,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -621,7 +621,7 @@ }, { "cell_type": "markdown", - "id": "ddbe30ef", + "id": "41fe5f62", "metadata": {}, "source": [ "The result is that your model is close to the mean, but Gordon\n", @@ -638,7 +638,7 @@ }, { "cell_type": "markdown", - "id": "59b1d208", + "id": "1c2d3a22", "metadata": {}, "source": [ "## Sharing your results as zipped arrays and a csv\n", @@ -663,7 +663,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "d68484fe", + "id": "89c762cb", "metadata": {}, "outputs": [ { @@ -697,7 +697,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "b36cdb55", + "id": "a4c0335d", "metadata": {}, "outputs": [], "source": [ @@ -715,7 +715,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "a7d0bd3b", + "id": "dbb13ef4", "metadata": {}, "outputs": [], "source": [ @@ -725,7 +725,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "9057baa4", + "id": "b7a4f950", "metadata": {}, "outputs": [ { @@ -743,7 +743,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "fcc028d4", + "id": "b2213676", "metadata": {}, "outputs": [ { @@ -783,7 +783,7 @@ }, { "cell_type": "markdown", - "id": "d5b6537c", + "id": "e910f750", "metadata": {}, "source": [ "The benefit of `np.savez` is you can save hundreds of arrays with\n", @@ -811,7 +811,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "333aa14d", + "id": "43207fa0", "metadata": {}, "outputs": [ { @@ -844,7 +844,7 @@ }, { "cell_type": "markdown", - "id": "525170b2", + "id": "a92aef3f", "metadata": {}, "source": [ "Build a single 2D array to export to csv. Tabular data is inherently two\n", @@ -870,7 +870,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "e75086ce", + "id": "af3d72ff", "metadata": {}, "outputs": [], "source": [ @@ -886,7 +886,7 @@ }, { "cell_type": "markdown", - "id": "c76f1228", + "id": "79916572", "metadata": {}, "source": [ "Creating the `mooreslaw_regression.csv` with `np.savetxt`, use three\n", @@ -900,7 +900,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "ec598f31", + "id": "aa67bf5c", "metadata": {}, "outputs": [], "source": [ @@ -910,7 +910,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "75fb37b1", + "id": "1ff4a5ad", "metadata": {}, "outputs": [ { @@ -936,7 +936,7 @@ }, { "cell_type": "markdown", - "id": "5be5bc9a", + "id": "8a2f1f8f", "metadata": {}, "source": [ "## Wrapping up\n", @@ -960,7 +960,7 @@ }, { "cell_type": "markdown", - "id": "27107e3d", + "id": "2273fed0", "metadata": {}, "source": [ "## References\n", diff --git a/_sources/content/pairing.ipynb b/_sources/content/pairing.ipynb index da9d7c89..5d711762 100644 --- a/_sources/content/pairing.ipynb +++ b/_sources/content/pairing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "0b3dee16", + "id": "1b8ba7b5", "metadata": {}, "source": [ "# Pairing Jupyter notebooks and MyST-NB\n", @@ -76,7 +76,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "4add3eed", + "id": "dedd373f", "metadata": {}, "outputs": [ { @@ -94,7 +94,7 @@ }, { "cell_type": "markdown", - "id": "b0ef941e", + "id": "dd88ff99", "metadata": {}, "source": [ "---\n", diff --git a/_sources/content/save-load-arrays.ipynb b/_sources/content/save-load-arrays.ipynb index 8bd471e5..2ba14b22 100644 --- a/_sources/content/save-load-arrays.ipynb +++ b/_sources/content/save-load-arrays.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "896aa5da", + "id": "08d25bc4", "metadata": {}, "source": [ "# Saving and sharing your NumPy arrays\n", @@ -37,7 +37,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "19e14d66", + "id": "539560d8", "metadata": {}, "outputs": [], "source": [ @@ -46,7 +46,7 @@ }, { "cell_type": "markdown", - "id": "27fdb3b6", + "id": "9fa2bd31", "metadata": {}, "source": [ "In this tutorial, you will use the following Python, IPython magic, and NumPy functions:\n", @@ -64,7 +64,7 @@ }, { "cell_type": "markdown", - "id": "3549bf9e", + "id": "2b73d4de", "metadata": {}, "source": [ "---\n", @@ -81,7 +81,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "e7637a07", + "id": "8c64a13f", "metadata": {}, "outputs": [ { @@ -102,7 +102,7 @@ }, { "cell_type": "markdown", - "id": "757ff679", + "id": "df92b324", "metadata": {}, "source": [ "## Save your arrays with NumPy's [`savez`](https://numpy.org/doc/stable/reference/generated/numpy.savez.html?highlight=savez#numpy.savez)\n", @@ -125,7 +125,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "c7e877ff", + "id": "94e29d9c", "metadata": {}, "outputs": [], "source": [ @@ -134,7 +134,7 @@ }, { "cell_type": "markdown", - "id": "b635f3c5", + "id": "3ce05075", "metadata": {}, "source": [ "## Remove the saved arrays and load them back with NumPy's [`load`](https://numpy.org/doc/stable/reference/generated/numpy.load.html#numpy.load)\n", @@ -159,7 +159,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "2730d1a9", + "id": "3c250ec2", "metadata": {}, "outputs": [], "source": [ @@ -169,7 +169,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "d14838f5", + "id": "617ca504", "metadata": {}, "outputs": [ { @@ -189,7 +189,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "9b87644b", + "id": "d63fd187", "metadata": {}, "outputs": [ { @@ -209,7 +209,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "8c6f2560", + "id": "964048b7", "metadata": {}, "outputs": [ { @@ -224,12 +224,12 @@ } ], "source": [ - "whos" + "%whos" ] }, { "cell_type": "markdown", - "id": "555b10eb", + "id": "f3d52251", "metadata": {}, "source": [ "## Reassign the NpzFile arrays to `x` and `y`\n", @@ -242,7 +242,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "f31df649", + "id": "2c525ad1", "metadata": {}, "outputs": [ { @@ -263,7 +263,7 @@ }, { "cell_type": "markdown", - "id": "f7549957", + "id": "a0134b8a", "metadata": {}, "source": [ "## Success\n", @@ -294,7 +294,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "69cb2a08", + "id": "aaeec3f3", "metadata": {}, "outputs": [ { @@ -323,7 +323,7 @@ }, { "cell_type": "markdown", - "id": "e264d250", + "id": "d411f283", "metadata": {}, "source": [ "## Save the data to csv file using [`savetxt`](https://numpy.org/doc/stable/reference/generated/numpy.savetxt.html#numpy.savetxt)\n", @@ -338,7 +338,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "e8da8648", + "id": "d3acf89d", "metadata": {}, "outputs": [], "source": [ @@ -347,7 +347,7 @@ }, { "cell_type": "markdown", - "id": "9d53ede6", + "id": "274fcaf0", "metadata": {}, "source": [ "Open the file, `x_y-squared.csv`, and you'll see the following:\n", @@ -387,7 +387,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "3a8878c2", + "id": "07fcb9c3", "metadata": {}, "outputs": [], "source": [ @@ -397,7 +397,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "b4b71d87", + "id": "c3aaceac", "metadata": {}, "outputs": [], "source": [ @@ -407,7 +407,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "8cb66d94", + "id": "d0bd177e", "metadata": {}, "outputs": [ { @@ -428,7 +428,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "12171f4d", + "id": "50ae6d0f", "metadata": {}, "outputs": [ { @@ -449,7 +449,7 @@ }, { "cell_type": "markdown", - "id": "c364bceb", + "id": "e1dbb437", "metadata": {}, "source": [ "## Success, but remember your types\n", @@ -460,7 +460,7 @@ }, { "cell_type": "markdown", - "id": "ba80dfca", + "id": "b478e283", "metadata": {}, "source": [ "## Wrapping up\n", diff --git a/_sources/content/save-load-arrays.md b/_sources/content/save-load-arrays.md index 434c7370..6768d938 100644 --- a/_sources/content/save-load-arrays.md +++ b/_sources/content/save-load-arrays.md @@ -127,7 +127,7 @@ print(load_xy.files) ``` ```{code-cell} -whos +%whos ``` ## Reassign the NpzFile arrays to `x` and `y` diff --git a/_sources/content/tutorial-air-quality-analysis.ipynb b/_sources/content/tutorial-air-quality-analysis.ipynb index 5e4ab37a..27b52fa6 100644 --- a/_sources/content/tutorial-air-quality-analysis.ipynb +++ b/_sources/content/tutorial-air-quality-analysis.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "89ec63b5", + "id": "b3e80e86", "metadata": {}, "source": [ "# Analyzing the impact of the lockdown on air quality in Delhi, India\n", @@ -36,7 +36,7 @@ }, { "cell_type": "markdown", - "id": "4f257b98", + "id": "11d314d6", "metadata": {}, "source": [ "## The problem of air pollution\n", @@ -54,7 +54,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "cb9af9e3", + "id": "1113b83a", "metadata": {}, "outputs": [], "source": [ @@ -65,7 +65,7 @@ }, { "cell_type": "markdown", - "id": "c8f15ec7", + "id": "4d5343f1", "metadata": {}, "source": [ "## Building the dataset\n", @@ -80,7 +80,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "d05b4203", + "id": "93662f50", "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "markdown", - "id": "d5e79677", + "id": "935be0de", "metadata": {}, "source": [ "For the purpose of this tutorial, we are only concerned with standard pollutants required for calculating the AQI, viz., PM 2.5, PM 10, NO2, NH3, SO2, CO, and O3. So, we will only import these particular columns with [np.loadtxt](https://numpy.org/devdocs/reference/generated/numpy.loadtxt.html). We'll then [slice](https://numpy.org/devdocs/glossary.html#term-0) and create two sets: `pollutants_A` with PM 2.5, PM 10, NO2, NH3, and SO2, and `pollutants_B` with CO and O3. The\n", @@ -116,7 +116,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "4526da5d", + "id": "109f028d", "metadata": {}, "outputs": [ { @@ -140,7 +140,7 @@ }, { "cell_type": "markdown", - "id": "847645f6", + "id": "1c2b4201", "metadata": {}, "source": [ "Our dataset might contain missing values, denoted by `NaN`, so let's do a quick check with [np.isfinite](https://numpy.org/devdocs/reference/generated/numpy.isfinite.html)." @@ -149,7 +149,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "1416ca66", + "id": "16678a54", "metadata": {}, "outputs": [ { @@ -169,7 +169,7 @@ }, { "cell_type": "markdown", - "id": "d7e392e7", + "id": "6515f038", "metadata": {}, "source": [ "With this, we have successfully imported the data and checked that it is complete. Let's move on to the AQI calculations!" @@ -177,7 +177,7 @@ }, { "cell_type": "markdown", - "id": "a977df7a", + "id": "7c3f5828", "metadata": {}, "source": [ "## Calculating the Air Quality Index\n", @@ -219,7 +219,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "b8534ce4", + "id": "c38bd805", "metadata": {}, "outputs": [], "source": [ @@ -238,7 +238,7 @@ }, { "cell_type": "markdown", - "id": "eeb309eb", + "id": "8bc97d18", "metadata": {}, "source": [ "### Moving averages\n", @@ -253,7 +253,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "9d149f59", + "id": "2e471a77", "metadata": {}, "outputs": [], "source": [ @@ -268,7 +268,7 @@ }, { "cell_type": "markdown", - "id": "774f78c0", + "id": "3533b82f", "metadata": {}, "source": [ "Now, we can join both sets with [np.concatenate](https://numpy.org/devdocs/reference/generated/numpy.concatenate.html) to form a single data set of all the averaged concentrations. Note that we have to join our arrays column-wise so we pass the\n", @@ -278,7 +278,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "c6db6dd1", + "id": "38743618", "metadata": {}, "outputs": [], "source": [ @@ -287,7 +287,7 @@ }, { "cell_type": "markdown", - "id": "ac54be33", + "id": "e1934685", "metadata": {}, "source": [ "### Sub-indices\n", @@ -304,7 +304,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "ae328d49", + "id": "248cb8bb", "metadata": {}, "outputs": [], "source": [ @@ -360,7 +360,7 @@ }, { "cell_type": "markdown", - "id": "25ccb2ba", + "id": "963b3f2a", "metadata": {}, "source": [ "We will use [np.vectorize](https://numpy.org/devdocs/reference/generated/numpy.vectorize.html) to utilize the concept of vectorization. This simply means we don't have loop over each element of the pollutant array ourselves. [Vectorization](https://numpy.org/devdocs/user/whatisnumpy.html#why-is-numpy-fast) is one of the key advantages of NumPy." @@ -369,7 +369,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "654af56d", + "id": "0caf2e40", "metadata": {}, "outputs": [], "source": [ @@ -378,7 +378,7 @@ }, { "cell_type": "markdown", - "id": "7c722562", + "id": "c68a5c69", "metadata": {}, "source": [ "By calling our vectorized function `vcompute_indices` for each pollutant, we get the sub-indices. To get back an array with the original shape, we use [np.stack](https://numpy.org/devdocs/reference/generated/numpy.stack.html)." @@ -387,7 +387,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "61b8f203", + "id": "d306eb4e", "metadata": {}, "outputs": [], "source": [ @@ -402,7 +402,7 @@ }, { "cell_type": "markdown", - "id": "03ed866c", + "id": "9265d1df", "metadata": {}, "source": [ "### Air quality indices\n", @@ -413,7 +413,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "d29d9a10", + "id": "14cfd13c", "metadata": {}, "outputs": [], "source": [ @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "d96c9f95", + "id": "6ae66bc8", "metadata": {}, "source": [ "With this, we have the AQI for every hour from June 1, 2019 to June 30, 2020. Note that even though we started out with\n", @@ -431,7 +431,7 @@ }, { "cell_type": "markdown", - "id": "49c55d6b", + "id": "8df73df5", "metadata": {}, "source": [ "## Paired Student's t-test on the AQIs\n", @@ -448,7 +448,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "9b00aad8", + "id": "30ac6ddf", "metadata": {}, "outputs": [], "source": [ @@ -458,7 +458,7 @@ }, { "cell_type": "markdown", - "id": "664e4a07", + "id": "4e39f2da", "metadata": {}, "source": [ "Since total lockdown commenced in Delhi from March 24, 2020, the after-lockdown subset is of the period March 24, 2020 to June 30, 2020. The before-lockdown subset is for the same length of time before 24th March." @@ -467,7 +467,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "8af4dd31", + "id": "7e09240a", "metadata": {}, "outputs": [ { @@ -490,7 +490,7 @@ }, { "cell_type": "markdown", - "id": "4f595988", + "id": "c90e7722", "metadata": {}, "source": [ "To make sure our samples are *approximately* normally distributed, we take samples of size `n = 30`. `before_sample` and `after_sample` are the set of random observations drawn before and after the total lockdown. We use [random.Generator.choice](https://numpy.org/devdocs/reference/random/generated/numpy.random.Generator.choice.html) to generate the samples." @@ -499,7 +499,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "2c3c108b", + "id": "1e13b892", "metadata": {}, "outputs": [], "source": [ @@ -511,7 +511,7 @@ }, { "cell_type": "markdown", - "id": "2291cf7b", + "id": "48b0f07d", "metadata": {}, "source": [ "### Defining the hypothesis\n", @@ -524,7 +524,7 @@ }, { "cell_type": "markdown", - "id": "b5549bcb", + "id": "eab587ae", "metadata": {}, "source": [ "### Calculating the test statistics\n", @@ -545,7 +545,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "1e73ae8d", + "id": "6fa44e1f", "metadata": {}, "outputs": [], "source": [ @@ -561,7 +561,7 @@ }, { "cell_type": "markdown", - "id": "821f975e", + "id": "b9febe51", "metadata": {}, "source": [ "For the `p` value, we will use SciPy's `stats.distributions.t.cdf()` function. It takes two arguments- the `t statistic` and the degrees of freedom (`dof`). The formula for `dof` is `n - 1`." @@ -570,14 +570,14 @@ { "cell_type": "code", "execution_count": 16, - "id": "970c520f", + "id": "8e8f0a25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The t value is -5.84285569186369 and the p value is 1.2266697972219608e-06.\n" + "The t value is -7.836332143875384 and the p value is 6.071929048036322e-09.\n" ] } ], @@ -591,7 +591,7 @@ }, { "cell_type": "markdown", - "id": "19a7ee87", + "id": "1eadd517", "metadata": {}, "source": [ "## What do the `t` and `p` values mean?\n", @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "be201240", + "id": "2e1abcf3", "metadata": {}, "source": [ "***\n", diff --git a/_sources/content/tutorial-deep-learning-on-mnist.ipynb b/_sources/content/tutorial-deep-learning-on-mnist.ipynb index e40fbc4d..f6d8ae29 100644 --- a/_sources/content/tutorial-deep-learning-on-mnist.ipynb +++ b/_sources/content/tutorial-deep-learning-on-mnist.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "6f873eab", + "id": "2496c023", "metadata": {}, "source": [ "# Deep learning on MNIST\n", @@ -64,7 +64,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "13bf1695", + "id": "5800f53d", "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "markdown", - "id": "6da3f310", + "id": "ee43258d", "metadata": {}, "source": [ "**2.** Load the data. First check if the data is stored locally; if not, then\n", @@ -88,7 +88,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "d30709e0", + "id": "3f2f3ac1", "metadata": { "tags": [ "remove-cell" @@ -110,7 +110,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "2cc87bf6", + "id": "c65ec42c", "metadata": {}, "outputs": [], "source": [ @@ -135,7 +135,7 @@ }, { "cell_type": "markdown", - "id": "13d0c605", + "id": "2af3a7c1", "metadata": {}, "source": [ "**3.** Decompress the 4 files and create 4 [`ndarrays`](https://numpy.org/doc/stable/reference/arrays.ndarray.html), saving them into a dictionary. Each original image is of size 28x28 and neural networks normally expect a 1D vector input; therefore, you also need to reshape the images by multiplying 28 by 28 (784)." @@ -144,7 +144,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "9f0079ce", + "id": "5e3d03da", "metadata": {}, "outputs": [], "source": [ @@ -167,7 +167,7 @@ }, { "cell_type": "markdown", - "id": "35e2c5fb", + "id": "4cb75a59", "metadata": {}, "source": [ "**4.** Split the data into training and test sets using the standard notation of `x` for data and `y` for labels, calling the training and test set images `x_train` and `x_test`, and the labels `y_train` and `y_test`:" @@ -176,7 +176,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "9f3d3282", + "id": "bafb31a4", "metadata": {}, "outputs": [], "source": [ @@ -190,7 +190,7 @@ }, { "cell_type": "markdown", - "id": "1d0b498d", + "id": "30984cf7", "metadata": {}, "source": [ "**5.** You can confirm that the shape of the image arrays is `(60000, 784)` and `(10000, 784)` for training and test sets, respectively, and the labels — `(60000,)` and `(10000,)`:" @@ -199,7 +199,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "604bbd6c", + "id": "b758fd5c", "metadata": {}, "outputs": [ { @@ -226,7 +226,7 @@ }, { "cell_type": "markdown", - "id": "625b412f", + "id": "12a53f16", "metadata": {}, "source": [ "**6.** And you can inspect some images using Matplotlib:" @@ -235,7 +235,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "cf6612fa", + "id": "6f043a63", "metadata": {}, "outputs": [ { @@ -264,7 +264,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "8fbe137e", + "id": "a70c36f4", "metadata": {}, "outputs": [ { @@ -291,7 +291,7 @@ }, { "cell_type": "markdown", - "id": "e933f2ba", + "id": "a56bd2a6", "metadata": {}, "source": [ "_Above are five images taken from the MNIST training set. Various hand-drawn\n", @@ -312,7 +312,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "2cc15c7c", + "id": "80136aa0", "metadata": {}, "outputs": [ { @@ -333,7 +333,7 @@ }, { "cell_type": "markdown", - "id": "47bc60cf", + "id": "2db61764", "metadata": {}, "source": [ "## 2. Preprocess the data\n", @@ -359,7 +359,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "5664f70a", + "id": "047cab0c", "metadata": {}, "outputs": [ { @@ -378,7 +378,7 @@ }, { "cell_type": "markdown", - "id": "91518c96", + "id": "805f0a13", "metadata": {}, "source": [ "**2.** Normalize the arrays by dividing them by 255 (and thus promoting the data type from `uint8` to `float64`) and then assign the train and test image data variables — `x_train` and `x_test` — to `training_images` and `train_labels`, respectively.\n", @@ -393,7 +393,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "1b7aa385", + "id": "545b20dc", "metadata": {}, "outputs": [], "source": [ @@ -404,7 +404,7 @@ }, { "cell_type": "markdown", - "id": "6ad3dcda", + "id": "f1c67e2b", "metadata": {}, "source": [ "**3.** Confirm that the image data has changed to the floating-point format:" @@ -413,7 +413,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "4707efd0", + "id": "6d9f2b29", "metadata": {}, "outputs": [ { @@ -432,7 +432,7 @@ }, { "cell_type": "markdown", - "id": "1f3d5b47", + "id": "656191b7", "metadata": {}, "source": [ "> **Note:** You can also check that normalization was successful by printing `training_images[0]` in a notebook cell. Your long output should contain an array of floating-point numbers:\n", @@ -461,7 +461,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "bf8ae9dc", + "id": "98ff671e", "metadata": {}, "outputs": [ { @@ -480,7 +480,7 @@ }, { "cell_type": "markdown", - "id": "439432dc", + "id": "91f7d1ad", "metadata": {}, "source": [ "**2.** Define a function that performs one-hot encoding on arrays:" @@ -489,7 +489,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "b960cdd6", + "id": "640470ee", "metadata": {}, "outputs": [], "source": [ @@ -503,7 +503,7 @@ }, { "cell_type": "markdown", - "id": "dcd5c35f", + "id": "dfab9b73", "metadata": {}, "source": [ "**3.** Encode the labels and assign the values to new variables:" @@ -512,7 +512,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "b54cb919", + "id": "34d51b6c", "metadata": {}, "outputs": [], "source": [ @@ -522,7 +522,7 @@ }, { "cell_type": "markdown", - "id": "65552293", + "id": "c315695a", "metadata": {}, "source": [ "**4.** Check that the data type has changed to floating point:" @@ -531,7 +531,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "093eafe8", + "id": "b8750410", "metadata": {}, "outputs": [ { @@ -550,7 +550,7 @@ }, { "cell_type": "markdown", - "id": "b24e345c", + "id": "bd9a5f17", "metadata": {}, "source": [ "**5.** Examine a few encoded labels:" @@ -559,7 +559,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "6b6b0351", + "id": "bc688b3b", "metadata": {}, "outputs": [ { @@ -580,7 +580,7 @@ }, { "cell_type": "markdown", - "id": "0ce1a89a", + "id": "67685fa1", "metadata": {}, "source": [ "...and compare to the originals:" @@ -589,7 +589,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "ce0e7a8d", + "id": "c9605bd1", "metadata": {}, "outputs": [ { @@ -610,7 +610,7 @@ }, { "cell_type": "markdown", - "id": "bea9e930", + "id": "48f148a2", "metadata": {}, "source": [ "You have finished preparing the dataset.\n", @@ -705,7 +705,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "d0f28d20", + "id": "7699eab6", "metadata": {}, "outputs": [], "source": [ @@ -715,7 +715,7 @@ }, { "cell_type": "markdown", - "id": "1ada42ec", + "id": "fa2a396e", "metadata": {}, "source": [ "**2.** For the hidden layer, define the ReLU activation function for forward propagation and ReLU's derivative that will be used during backpropagation:" @@ -724,7 +724,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "1698fc61", + "id": "4b24217d", "metadata": {}, "outputs": [], "source": [ @@ -741,7 +741,7 @@ }, { "cell_type": "markdown", - "id": "b0a086ae", + "id": "72b58cfa", "metadata": {}, "source": [ "**3.** Set certain default values of [hyperparameters](https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)), such as:\n", @@ -756,7 +756,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "c575fc98", + "id": "a4c30d01", "metadata": {}, "outputs": [], "source": [ @@ -769,7 +769,7 @@ }, { "cell_type": "markdown", - "id": "cb10a276", + "id": "6c1731c3", "metadata": {}, "source": [ "**4.** Initialize the weight vectors that will be used in the hidden and output layers with random values:" @@ -778,7 +778,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "1c9acfe1", + "id": "1d1afccb", "metadata": {}, "outputs": [], "source": [ @@ -788,7 +788,7 @@ }, { "cell_type": "markdown", - "id": "904f7aa5", + "id": "4ab6a5f5", "metadata": {}, "source": [ "**5.** Set up the neural network's learning experiment with a training loop and start the training process.\n", @@ -801,7 +801,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "367ecff9", + "id": "ffa67796", "metadata": {}, "outputs": [ { @@ -1130,7 +1130,7 @@ }, { "cell_type": "markdown", - "id": "b234a23e", + "id": "c835d8b9", "metadata": {}, "source": [ "The training process may take many minutes, depending on a number of factors, such as the processing power of the machine you are running the experiment on and the number of epochs. To reduce the waiting time, you can change the epoch (iteration) variable from 100 to a lower number, reset the runtime (which will reset the weights), and run the notebook cells again." @@ -1138,7 +1138,7 @@ }, { "cell_type": "markdown", - "id": "2c4fcacd", + "id": "bb309bb8", "metadata": {}, "source": [ "After executing the cell above, you can visualize the training and test set errors and accuracy for an instance of this training process." @@ -1147,7 +1147,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "da7d01b4", + "id": "a2b87b83", "metadata": {}, "outputs": [ { @@ -1192,7 +1192,7 @@ }, { "cell_type": "markdown", - "id": "61fc33df", + "id": "46b863aa", "metadata": {}, "source": [ "_The training and testing error is shown above in the left and right\n", diff --git a/_sources/content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.ipynb b/_sources/content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.ipynb index 864a752d..b04dbc51 100644 --- a/_sources/content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.ipynb +++ b/_sources/content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "266d88d1", + "id": "a0b06a47", "metadata": {}, "source": [ "# Deep reinforcement learning with Pong from pixels\n", diff --git a/_sources/content/tutorial-ma.ipynb b/_sources/content/tutorial-ma.ipynb index ea260013..ef57183f 100644 --- a/_sources/content/tutorial-ma.ipynb +++ b/_sources/content/tutorial-ma.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ce416acd", + "id": "8bddd837", "metadata": {}, "source": [ "# Masked Arrays\n", @@ -26,7 +26,7 @@ }, { "cell_type": "markdown", - "id": "7307b1ec", + "id": "be53d685", "metadata": {}, "source": [ "***" @@ -34,7 +34,7 @@ }, { "cell_type": "markdown", - "id": "2bd24fd0", + "id": "3c3bd245", "metadata": {}, "source": [ "## What are masked arrays?\n", @@ -65,7 +65,7 @@ }, { "cell_type": "markdown", - "id": "78a188bb", + "id": "b12e31d5", "metadata": {}, "source": [ "## Using masked arrays to see COVID-19 data\n", @@ -76,7 +76,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "cc0fe22b", + "id": "7b23b9e3", "metadata": {}, "outputs": [], "source": [ @@ -91,7 +91,7 @@ }, { "cell_type": "markdown", - "id": "3ada46ce", + "id": "59209cd0", "metadata": {}, "source": [ "The data file contains data of different types and is organized as follows:\n", @@ -107,7 +107,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "f122cadf", + "id": "4a749921", "metadata": {}, "outputs": [], "source": [ @@ -145,7 +145,7 @@ }, { "cell_type": "markdown", - "id": "267a2180", + "id": "cd204dd4", "metadata": {}, "source": [ "Included in the `numpy.genfromtxt` function call, we have selected the [numpy.dtype](https://numpy.org/devdocs/reference/generated/numpy.dtype.html#numpy.dtype) for each subset of the data (either an integer - `numpy.int_` - or a string of characters - `numpy.str_`). We have also used the `encoding` argument to select `utf-8-sig` as the encoding for the file (read more about encoding in the [official Python documentation](https://docs.python.org/3/library/codecs.html#encodings-and-unicode). You can read more about the `numpy.genfromtxt` function from the [Reference Documentation](https://numpy.org/devdocs/reference/generated/numpy.genfromtxt.html#numpy.genfromtxt) or from the [Basic IO tutorial](https://numpy.org/devdocs/user/basics.io.genfromtxt.html)." @@ -153,7 +153,7 @@ }, { "cell_type": "markdown", - "id": "bb679f07", + "id": "eb26811c", "metadata": {}, "source": [ "## Exploring the data\n", @@ -164,7 +164,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "835072d9", + "id": "d6e04423", "metadata": {}, "outputs": [ { @@ -199,7 +199,7 @@ }, { "cell_type": "markdown", - "id": "07184822", + "id": "8ceb68ca", "metadata": {}, "source": [ "The graph has a strange shape from January 24th to February 1st. It would be interesting to know where this data comes from. If we look at the `locations` array we extracted from the `.csv` file, we can see that we have two columns, where the first would contain regions and the second would contain the name of the country. However, only the first few rows contain data for the the first column (province names in China). Following that, we only have country names. So it would make sense to group all the data from China into a single row. For this, we'll select from the `nbcases` array only the rows for which the second entry of the `locations` array corresponds to China. Next, we'll use the [numpy.sum](https://numpy.org/devdocs/reference/generated/numpy.sum.html#numpy.sum) function to sum all the selected rows (`axis=0`). Note also that row 35 corresponds to the total counts for the whole country for each date. Since we want to calculate the sum ourselves from the provinces data, we have to remove that row first from both `locations` and `nbcases`:" @@ -208,7 +208,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "4d89e32c", + "id": "bc451797", "metadata": {}, "outputs": [ { @@ -234,7 +234,7 @@ }, { "cell_type": "markdown", - "id": "99097167", + "id": "c4900a8b", "metadata": {}, "source": [ "Something's wrong with this data - we are not supposed to have negative values in a cumulative data set. What's going on?" @@ -242,7 +242,7 @@ }, { "cell_type": "markdown", - "id": "24847252", + "id": "bce4e243", "metadata": {}, "source": [ "## Missing data\n", @@ -253,7 +253,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "caf6db50", + "id": "42bc44a2", "metadata": {}, "outputs": [ { @@ -279,7 +279,7 @@ }, { "cell_type": "markdown", - "id": "364fec97", + "id": "9f9278b1", "metadata": {}, "source": [ "All the `-1` values we are seeing come from `numpy.genfromtxt` attempting to read missing data from the original `.csv` file. Obviously, we\n", @@ -289,7 +289,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "97a793ad", + "id": "f1f70a23", "metadata": {}, "outputs": [], "source": [ @@ -300,7 +300,7 @@ }, { "cell_type": "markdown", - "id": "db411008", + "id": "6cc4542a", "metadata": {}, "source": [ "If we look at the `nbcases_ma` masked array, this is what we have:" @@ -309,7 +309,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "5fb740ff", + "id": "9811ce26", "metadata": {}, "outputs": [ { @@ -344,7 +344,7 @@ }, { "cell_type": "markdown", - "id": "68df6b61", + "id": "6862458f", "metadata": {}, "source": [ "We can see that this is a different kind of array. As mentioned in the introduction, it has three attributes (`data`, `mask` and `fill_value`).\n", @@ -353,7 +353,7 @@ }, { "cell_type": "markdown", - "id": "4dab3f86", + "id": "99fc5c7f", "metadata": {}, "source": [ "Let's try and see what the data looks like excluding the first row (data from the Hubei province in China) so we can look at the missing data more\n", @@ -363,7 +363,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "32cc3159", + "id": "1412c877", "metadata": {}, "outputs": [ { @@ -395,7 +395,7 @@ }, { "cell_type": "markdown", - "id": "f9f2f90d", + "id": "0a10ce06", "metadata": {}, "source": [ "Now that our data has been masked, let's try summing up all the cases in China:" @@ -404,7 +404,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "d0c5c136", + "id": "f1427f63", "metadata": {}, "outputs": [ { @@ -429,7 +429,7 @@ }, { "cell_type": "markdown", - "id": "65f63049", + "id": "5f53f1ee", "metadata": {}, "source": [ "Note that `china_masked` is a masked array, so it has a different data structure than a regular NumPy array. Now, we can access its data directly by using the `.data` attribute:" @@ -438,7 +438,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "cfe36952", + "id": "5040d9c9", "metadata": {}, "outputs": [ { @@ -460,7 +460,7 @@ }, { "cell_type": "markdown", - "id": "16297d5a", + "id": "fa493c60", "metadata": {}, "source": [ "That is better: no more negative values. However, we can still see that for some days, the cumulative number of cases seems to go down (from 835 to 10, for example), which does not agree with the definition of \"cumulative data\". If we look more closely at the data, we can see that in the period where there was missing data in mainland China, there was valid data for Hong Kong, Taiwan, Macau and \"Unspecified\" regions of China. Maybe we can remove those from the total sum of cases in China, to get a better understanding of the data.\n", @@ -471,7 +471,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "65ae64ea", + "id": "8ea8ceed", "metadata": {}, "outputs": [], "source": [ @@ -486,7 +486,7 @@ }, { "cell_type": "markdown", - "id": "0c8db746", + "id": "474ac17e", "metadata": {}, "source": [ "Now, `china_mask` is an array of boolean values (`True` or `False`); we can check that the indices are what we wanted with the [ma.nonzero](https://numpy.org/devdocs/reference/generated/numpy.ma.nonzero.html#numpy.ma.nonzero) method for masked arrays:" @@ -495,7 +495,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "a4b687e5", + "id": "bd7d739d", "metadata": {}, "outputs": [ { @@ -516,7 +516,7 @@ }, { "cell_type": "markdown", - "id": "8f855090", + "id": "27e7fa1c", "metadata": {}, "source": [ "Now we can correctly sum entries for mainland China:" @@ -525,7 +525,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "8cf4ae10", + "id": "81a0bc34", "metadata": {}, "outputs": [ { @@ -550,7 +550,7 @@ }, { "cell_type": "markdown", - "id": "627c82cb", + "id": "8fbf68f2", "metadata": {}, "source": [ "We can replace the data with this information and plot a new graph, focusing on Mainland China:" @@ -559,7 +559,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "18346bdf", + "id": "aed470b4", "metadata": {}, "outputs": [ { @@ -591,7 +591,7 @@ }, { "cell_type": "markdown", - "id": "8c7549c7", + "id": "699be25b", "metadata": {}, "source": [ "It's clear that masked arrays are the right solution here. We cannot represent the missing data without mischaracterizing the evolution of the curve." @@ -599,7 +599,7 @@ }, { "cell_type": "markdown", - "id": "1c4e300f", + "id": "6e0dc360", "metadata": {}, "source": [ "## Fitting Data\n", @@ -610,7 +610,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "baf3426b", + "id": "422c7d67", "metadata": {}, "outputs": [ { @@ -635,7 +635,7 @@ }, { "cell_type": "markdown", - "id": "d3df3c41", + "id": "cc6048ed", "metadata": {}, "source": [ "We can also access the valid entries by using the logical negation for this mask:" @@ -644,7 +644,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "d064add3", + "id": "43fc5bd7", "metadata": {}, "outputs": [ { @@ -667,7 +667,7 @@ }, { "cell_type": "markdown", - "id": "c4b99a5e", + "id": "f04695c6", "metadata": {}, "source": [ "Now, if we want to create a very simple approximation for this data, we should take into account the valid entries around the invalid ones. So first let's select the dates for which the data is valid. Note that we can use the mask from the `china_total` masked array to index the dates array:" @@ -676,7 +676,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "0061003d", + "id": "5738722d", "metadata": {}, "outputs": [ { @@ -697,7 +697,7 @@ }, { "cell_type": "markdown", - "id": "243fcc8e", + "id": "ec5da718", "metadata": {}, "source": [ "Finally, we can use the\n", @@ -708,13 +708,13 @@ { "cell_type": "code", "execution_count": 18, - "id": "3d507ddf", + "id": "7c5f197a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 18, @@ -741,7 +741,7 @@ }, { "cell_type": "markdown", - "id": "46e73965", + "id": "11311df2", "metadata": {}, "source": [ "This plot is not so readable since the lines seem to be over each other, so let's summarize in a more elaborate plot. We'll plot the real data when\n", @@ -751,7 +751,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "49c7261a", + "id": "fbcb0be7", "metadata": {}, "outputs": [ { @@ -790,7 +790,7 @@ }, { "cell_type": "markdown", - "id": "5e530dd4", + "id": "039ce7be", "metadata": {}, "source": [ "## In practice" @@ -798,7 +798,7 @@ }, { "cell_type": "markdown", - "id": "41ff239c", + "id": "74141ac4", "metadata": {}, "source": [ "- Adding `-1` to missing data is not a problem with `numpy.genfromtxt`; in this particular case, substituting the missing value with `0` might have been fine, but we'll see later that this is far from a general solution. Also, it is possible to call the `numpy.genfromtxt` function using the `usemask` parameter. If `usemask=True`, `numpy.genfromtxt` automatically returns a masked array." @@ -806,7 +806,7 @@ }, { "cell_type": "markdown", - "id": "bd0cee8b", + "id": "89b79e41", "metadata": {}, "source": [ "## Further reading\n", diff --git a/_sources/content/tutorial-plotting-fractals.ipynb b/_sources/content/tutorial-plotting-fractals.ipynb index aa29d87c..75a60519 100644 --- a/_sources/content/tutorial-plotting-fractals.ipynb +++ b/_sources/content/tutorial-plotting-fractals.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "58a512fe", + "id": "7419ab7a", "metadata": {}, "source": [ "# Plotting Fractals" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "ab1c8e80", + "id": "cd85adb2", "metadata": {}, "source": [ "![Fractal picture](tutorial-plotting-fractals/fractal.png)" @@ -18,7 +18,7 @@ }, { "cell_type": "markdown", - "id": "3adb6db4", + "id": "5fdca807", "metadata": {}, "source": [ "Fractals are beautiful, compelling mathematical forms that can be oftentimes created from a relatively simple set of instructions. In nature they can be found in various places, such as coastlines, seashells, and ferns, and even were used in creating certain types of antennas. The mathematical idea of fractals was known for quite some time, but they really began to be truly appreciated in the 1970's as advancements in computer graphics and some accidental discoveries lead researchers like [Benoît Mandelbrot](https://en.wikipedia.org/wiki/Benoit_Mandelbrot) to stumble upon the truly mystifying visualizations that fractals possess.\n", @@ -28,7 +28,7 @@ }, { "cell_type": "markdown", - "id": "07561bf9", + "id": "f15a7746", "metadata": {}, "source": [ "## What you'll do\n", @@ -41,7 +41,7 @@ }, { "cell_type": "markdown", - "id": "3dcea84b", + "id": "93273881", "metadata": {}, "source": [ "## What you'll learn\n", @@ -54,7 +54,7 @@ }, { "cell_type": "markdown", - "id": "7bd6aa06", + "id": "e7cb6a61", "metadata": {}, "source": [ "## What you'll need\n", @@ -68,7 +68,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "4ae2341a", + "id": "302a4586", "metadata": {}, "outputs": [], "source": [ @@ -79,7 +79,7 @@ }, { "cell_type": "markdown", - "id": "24f08c4e", + "id": "d3f92bce", "metadata": {}, "source": [ "- Some familiarity with Python, NumPy and matplotlib\n", @@ -90,7 +90,7 @@ }, { "cell_type": "markdown", - "id": "a2da45b1", + "id": "e29f3afc", "metadata": {}, "source": [ "## Warmup\n", @@ -109,7 +109,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "2673530f", + "id": "c3581257", "metadata": {}, "outputs": [], "source": [ @@ -119,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "4c40f12c", + "id": "29bf2da5", "metadata": {}, "source": [ "Note that the square function we used is an example of a **[NumPy universal function](https://numpy.org/doc/stable/reference/ufuncs.html)**; we will come back to the significance of this decision shortly.\n", @@ -132,7 +132,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "aadba111", + "id": "514af6c0", "metadata": {}, "outputs": [ { @@ -152,7 +152,7 @@ }, { "cell_type": "markdown", - "id": "c042a873", + "id": "0a9f77b9", "metadata": {}, "source": [ "Since we used a universal function in our design, we can compute multiple inputs at the same time:" @@ -161,7 +161,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "65677895", + "id": "881c7a24", "metadata": {}, "outputs": [ { @@ -182,7 +182,7 @@ }, { "cell_type": "markdown", - "id": "35a75ea4", + "id": "1f01c69b", "metadata": {}, "source": [ "Some values grow, some values shrink, some don't experience much change.\n", @@ -193,7 +193,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "96565fb6", + "id": "f3e8b2c4", "metadata": {}, "outputs": [], "source": [ @@ -203,7 +203,7 @@ }, { "cell_type": "markdown", - "id": "ed337a21", + "id": "98254260", "metadata": {}, "source": [ "Now we will apply our function to each value contained in the mesh. Since we used a universal function in our design, this means that we can pass in the entire mesh all at once. This is extremely convenient for two reasons: It reduces the amount of code needed to be written and greatly increases the efficiency (as universal functions make use of system level C programming in their computations).\n", @@ -215,7 +215,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "b16ea604", + "id": "0f7432b6", "metadata": {}, "outputs": [ { @@ -245,7 +245,7 @@ }, { "cell_type": "markdown", - "id": "c1691de5", + "id": "e0c6efd0", "metadata": {}, "source": [ "This gives us a rough idea of what one iteration of the function does. Certain areas (notably in the areas closest to $(0,0i)$) remain rather small while other areas grow quite considerably. Note that we lose information about the output by taking the absolute value, but it is the only way for us to be able to make a plot.\n", @@ -256,7 +256,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "f2895bdc", + "id": "3a185671", "metadata": {}, "outputs": [ { @@ -285,7 +285,7 @@ }, { "cell_type": "markdown", - "id": "b9955891", + "id": "3db44344", "metadata": {}, "source": [ "Once again, we see that values around the origin remain small, and values with a larger absolute value (or modulus) “explode”.\n", @@ -295,7 +295,7 @@ }, { "cell_type": "markdown", - "id": "22a8e8c7", + "id": "62233117", "metadata": {}, "source": [ "Consider three complex numbers:\n", @@ -312,7 +312,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "bdf3e634", + "id": "5aa5b83c", "metadata": {}, "outputs": [ { @@ -349,7 +349,7 @@ }, { "cell_type": "markdown", - "id": "f4f1cf8b", + "id": "bed55d63", "metadata": {}, "source": [ "To our surprise, the behaviour of the function did not come close to matching our hypothesis. This is a prime example of the chaotic behaviour fractals possess. In the first two plots, the value \"exploded\" on the last iteration, jumping way beyond the region that it was contained in previously. The third plot on the other hand remained bounded to a small region close to the origin, yielding completely different behaviour despite the tiny change in value.\n", @@ -366,7 +366,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "f5836721", + "id": "d1b6256c", "metadata": {}, "outputs": [], "source": [ @@ -386,7 +386,7 @@ }, { "cell_type": "markdown", - "id": "46d531a3", + "id": "6a8f74c1", "metadata": {}, "source": [ "The behaviour of this function may look confusing at first glance, so it will help to explain some of the notation.\n", @@ -401,7 +401,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "277cf7b8", + "id": "0f45b66b", "metadata": {}, "outputs": [ { @@ -436,7 +436,7 @@ }, { "cell_type": "markdown", - "id": "888a87ee", + "id": "fe8670a6", "metadata": {}, "source": [ "What this stunning visual conveys is the complexity of the function’s behaviour. The yellow region represents values that remain small, while the purple region represents the divergent values. The beautiful pattern that arises on the border of the converging and diverging values is even more fascinating when you realize that it is created from such a simple function." @@ -444,7 +444,7 @@ }, { "cell_type": "markdown", - "id": "9ddd954d", + "id": "291fc986", "metadata": {}, "source": [ "## Julia set\n", @@ -459,7 +459,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "cf808a93", + "id": "19b9c1c2", "metadata": {}, "outputs": [], "source": [ @@ -478,7 +478,7 @@ }, { "cell_type": "markdown", - "id": "82a2edf2", + "id": "0c39b5f1", "metadata": {}, "source": [ "To make our lives easier, we will create a couple meshes that we will reuse throughout the rest of the examples:" @@ -487,7 +487,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "47cc2c19", + "id": "4c304f99", "metadata": {}, "outputs": [], "source": [ @@ -500,7 +500,7 @@ }, { "cell_type": "markdown", - "id": "660263db", + "id": "feaed35f", "metadata": {}, "source": [ "We will also write a function that we will use to create our fractal plots:" @@ -509,7 +509,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "7ba3ac4c", + "id": "c03c6e15", "metadata": {}, "outputs": [], "source": [ @@ -530,7 +530,7 @@ }, { "cell_type": "markdown", - "id": "573fef7c", + "id": "f2c4b20f", "metadata": {}, "source": [ "Using our newly defined functions, we can make a quick plot of the first fractal again:" @@ -539,7 +539,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "cd526fde", + "id": "0e2f1fb6", "metadata": {}, "outputs": [ { @@ -562,7 +562,7 @@ }, { "cell_type": "markdown", - "id": "151e96b5", + "id": "5cabe2ac", "metadata": {}, "source": [ "We also can explore some different Julia sets by experimenting with different values of $c$. It can be surprising how much influence it has on the shape of the fractal.\n", @@ -573,7 +573,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "320a702c", + "id": "73862608", "metadata": {}, "outputs": [ { @@ -589,7 +589,7 @@ ], "source": [ "output = julia(mesh, c=np.pi/10, num_iter=20)\n", - "kwargs = {'title': 'f(z) = z^2 + \\dfrac{\\pi}{10}', 'cmap': 'plasma'}\n", + "kwargs = {'title': r'f(z) = z^2 + \\dfrac{\\pi}{10}', 'cmap': 'plasma'}\n", "\n", "plot_fractal(output, **kwargs);" ] @@ -597,7 +597,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "710758c3", + "id": "dd50d02f", "metadata": {}, "outputs": [ { @@ -613,14 +613,14 @@ ], "source": [ "output = julia(mesh, c=-0.75 + 0.4j, num_iter=20)\n", - "kwargs = {'title': 'f(z) = z^2 - \\dfrac{3}{4} + 0.4i', 'cmap': 'Greens_r'}\n", + "kwargs = {'title': r'f(z) = z^2 - \\dfrac{3}{4} + 0.4i', 'cmap': 'Greens_r'}\n", "\n", "plot_fractal(output, **kwargs);" ] }, { "cell_type": "markdown", - "id": "efaad168", + "id": "3ab24745", "metadata": {}, "source": [ "## Mandelbrot set\n", @@ -631,7 +631,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "f074d742", + "id": "fbbce0b1", "metadata": {}, "outputs": [], "source": [ @@ -652,7 +652,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "79cb74d5", + "id": "2ef6604d", "metadata": {}, "outputs": [ { @@ -668,14 +668,14 @@ ], "source": [ "output = mandelbrot(mesh, num_iter=50)\n", - "kwargs = {'title': 'Mandelbrot \\ set', 'cmap': 'hot'}\n", + "kwargs = {'title': 'Mandelbrot \\\\ set', 'cmap': 'hot'}\n", "\n", "plot_fractal(output, **kwargs);" ] }, { "cell_type": "markdown", - "id": "f1b3f9ff", + "id": "9ee2b2bb", "metadata": {}, "source": [ "## Generalizing the Julia set\n", @@ -686,7 +686,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "19167255", + "id": "7507947f", "metadata": {}, "outputs": [], "source": [ @@ -705,7 +705,7 @@ }, { "cell_type": "markdown", - "id": "55a62889", + "id": "9dfd01b1", "metadata": {}, "source": [ "One cool set of fractals that can be plotted using our general Julia function are ones of the form $f(z) = z^n + c$ for some positive integer $n$. A very cool pattern which emerges is that the number of regions that 'stick out' matches the degree in which we raise the function to while iterating over it." @@ -714,12 +714,12 @@ { "cell_type": "code", "execution_count": 20, - "id": "76f593c2", + "id": "a4eb0297", "metadata": {}, "outputs": [ { "data": { - "image/png": "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ao9qSxBErxnUMcEwDHzwgx/E5z73OWzbtg2apuHgwYMIhUJrXTWCWPcM6rggctttt+Gqq67Czp0717oqhAukWKxT/vEf/xF//dd/jZe+9KX44he/iI9//OP46Ec/ine/+93w+dq7ba973etQq9Xw2c9+tke1bZ8/+7M/w/j4OJ73vOfhoYce6um1CoUC3v/+9+N//a//hZGREWiahn/913/t6TUJotsM6phw+vRplEolfP3rX8fk5CTOO+88fO5zn+vpNWlMIAaFQR0XRL785S/jD/7gD3p6DRoXuoRFrEsuvfRS6/rrr+e/P/7xj1vJZNIql8srKu9d73qXtX37dss0zW5VccX87Gc/s/L5vFUqlayPfvSj1ubNm61cLtez6504ccICYG3bts169rOfbQGwbrnllp5djyB6waCOCXfffbcFwHrDG95glUol6/Dhw9bY2Jh155139uyaNCYQg8Kgjgt2Dh8+bIXDYSudTvf0OjQudAfyWKxDKpUKDh8+jGc961l82y233IIXvehFCIfDKyrz5S9/OZ544gnccccd3armirn88ssRj8cRiUTwrne9C4lEAvfee2/Prrdp0ybMzMzgiSeewMc+9rGeXYcgesUgjwmRSAQA8Nd//deIRCI4ePAgXvnKV+K73/1uz65JYwIxCAzyuGDny1/+Mn7rt34LqVSqp9ehcaE7kGKxznjjG9+ISCQCwzDwvve9D5qmYdOmTXjooYdw3XXXtRx/9OhRaJom/Wd/CS+77DKMjIzgG9/4Rs/q7rUuIj6fD5Zl9axeoVAIU1NTPSufIHrJoI8J+/btQzAYhKZp/Dz7372AxgSi3xn0cYFhmiZuu+02vOY1r+lZfRg0LnQHygq1znjVq16FQCCAz372s/jkJz+JkZERPP744/ibv/kbXHrppS3HJ5NJfPnLX27aduTIEXzwgx/E9ddf37T90ksvxd133y29br1eRzab9VTHkZERaeyml7pkMhn8/Oc/x7Oe9Sxomoabb74ZS0tLuOKKKzxdmyA2GoM+JsRiMbzsZS/DBz/4QXzqU5/C8ePH8bWvfQ1f//rXPV2bIDYigz4uMH7wgx+gXq9TWvp+Yq1jsYhW3vve91qxWMwyDMOyLMt63/veZwGw8vm867mPP/64tXnzZuuaa66xisVi0743v/nNViQSkZ53xx13WAA8/Ttx4oSn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", + "image/png": "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", "text/plain": [ "
" ] @@ -738,14 +738,12 @@ "\n", " diverge_len = general_julia(mesh, f=power, num_iter=15)\n", " ax.imshow(diverge_len, extent=[-2, 2, -2, 2], cmap='binary')\n", - " ax.set_title(f'$f(z) = z^{degree} -1$')\n", - "\n", - "fig.tight_layout();" + " ax.set_title(f'$f(z) = z^{degree} -1$')" ] }, { "cell_type": "markdown", - "id": "4db0802b", + "id": "e6754310", "metadata": {}, "source": [ "Needless to say, there is a large amount of exploring that can be done by fiddling with the inputted function, value of $c$, number of iterations, radius and even the density of the mesh and choice of colours." @@ -753,7 +751,7 @@ }, { "cell_type": "markdown", - "id": "4ac42c2c", + "id": "6262abf1", "metadata": {}, "source": [ "### Newton Fractals\n", @@ -768,7 +766,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "08c80a23", + "id": "93815742", "metadata": {}, "outputs": [], "source": [ @@ -789,7 +787,7 @@ }, { "cell_type": "markdown", - "id": "27bfea88", + "id": "5279fd5f", "metadata": {}, "source": [ "Now we can experiment with some different functions. For polynomials, we can create our plots quite effortlessly using the [NumPy Polynomial class](https://numpy.org/doc/stable/reference/generated/numpy.polynomial.polynomial.Polynomial.html), which has built in functionality for computing derivatives.\n", @@ -800,7 +798,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "a22c5d5e", + "id": "850ef943", "metadata": {}, "outputs": [ { @@ -824,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "4676449e", + "id": "eb7cab84", "metadata": {}, "source": [ "which has the derivative:" @@ -833,7 +831,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "262b3244", + "id": "ba0d134a", "metadata": {}, "outputs": [ { @@ -857,7 +855,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "60ac4854", + "id": "a3cd7a0a", "metadata": {}, "outputs": [ { @@ -873,14 +871,14 @@ ], "source": [ "output = newton_fractal(mesh, p, p.deriv(), num_iter=15, r=2)\n", - "kwargs = {'title': 'f(z) = z - \\dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'}\n", + "kwargs = {'title': r'f(z) = z - \\dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'}\n", "\n", "plot_fractal(output, **kwargs)" ] }, { "cell_type": "markdown", - "id": "1f743d0d", + "id": "07909bfa", "metadata": {}, "source": [ "Beautiful! Let's try another one:\n", @@ -895,7 +893,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "dedcdcbf", + "id": "c34da177", "metadata": {}, "outputs": [], "source": [ @@ -910,7 +908,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "7b76333b", + "id": "e7d9a4db", "metadata": {}, "outputs": [ { @@ -926,14 +924,14 @@ ], "source": [ "output = newton_fractal(mesh, f_tan, d_tan, num_iter=15, r=50)\n", - "kwargs = {'title': 'f(z) = z - \\dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'}\n", + "kwargs = {'title': r'f(z) = z - \\dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'}\n", "\n", "plot_fractal(output, **kwargs);" ] }, { "cell_type": "markdown", - "id": "e2641873", + "id": "6d1fe0a0", "metadata": {}, "source": [ "Note that you sometimes have to play with the radius in order to get a neat looking fractal.\n", @@ -948,7 +946,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "3e0357a9", + "id": "93665862", "metadata": {}, "outputs": [], "source": [ @@ -968,7 +966,7 @@ }, { "cell_type": "markdown", - "id": "2e929914", + "id": "6d508d2d", "metadata": {}, "source": [ "We will denote this one 'Wacky fractal', as its equation would not be fun to try and put in the title." @@ -977,7 +975,7 @@ { "cell_type": "code", "execution_count": 28, - "id": "03bcbe02", + "id": "04c811da", "metadata": {}, "outputs": [ { @@ -993,14 +991,14 @@ ], "source": [ "output = newton_fractal(small_mesh, sin_sum, d_sin_sum, num_iter=10, r=1)\n", - "kwargs = {'title': 'Wacky \\ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'}\n", + "kwargs = {'title': 'Wacky \\\\ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'}\n", "\n", "plot_fractal(output, **kwargs)" ] }, { "cell_type": "markdown", - "id": "10f76c3d", + "id": "5ba0e13f", "metadata": {}, "source": [ "It is truly fascinating how distinct yet similar these fractals are with each other. This leads us to the final section." @@ -1008,7 +1006,7 @@ }, { "cell_type": "markdown", - "id": "093cc4ae", + "id": "8d43e9c0", "metadata": {}, "source": [ "## Creating your own fractals\n", @@ -1026,7 +1024,7 @@ { "cell_type": "code", "execution_count": 29, - "id": "bfc47181", + "id": "aa387efc", "metadata": {}, "outputs": [], "source": [ @@ -1037,7 +1035,7 @@ { "cell_type": "code", "execution_count": 30, - "id": "60b842c7", + "id": "f78d895a", "metadata": {}, "outputs": [ { @@ -1060,7 +1058,7 @@ }, { "cell_type": "markdown", - "id": "1b0e2f16", + "id": "d1e5e716", "metadata": {}, "source": [ "What happens if we compose our defined function inside of a sine function?\n", @@ -1073,7 +1071,7 @@ { "cell_type": "code", "execution_count": 31, - "id": "c6c21896", + "id": "f914520a", "metadata": {}, "outputs": [], "source": [ @@ -1084,7 +1082,7 @@ { "cell_type": "code", "execution_count": 32, - "id": "4ae88d59", + "id": "79addff7", "metadata": {}, "outputs": [ { @@ -1107,7 +1105,7 @@ }, { "cell_type": "markdown", - "id": "c2c8cfd8", + "id": "cb5c9e9e", "metadata": {}, "source": [ "Next, let's create a function that applies both f and g to the inputs each iteration and adds the result together:\n", @@ -1118,7 +1116,7 @@ { "cell_type": "code", "execution_count": 33, - "id": "9fb08a69", + "id": "c3e336ab", "metadata": {}, "outputs": [], "source": [ @@ -1129,7 +1127,7 @@ { "cell_type": "code", "execution_count": 34, - "id": "4bdebdef", + "id": "27bccc34", "metadata": {}, "outputs": [ { @@ -1152,7 +1150,7 @@ }, { "cell_type": "markdown", - "id": "e5898a19", + "id": "f7afc0ce", "metadata": {}, "source": [ "You can even create beautiful fractals through your own errors. Here is one that got created accidently by making a mistake in computing the derivative of a Newton fractal:" @@ -1161,7 +1159,7 @@ { "cell_type": "code", "execution_count": 35, - "id": "94f71913", + "id": "96f8af4d", "metadata": {}, "outputs": [], "source": [ @@ -1172,7 +1170,7 @@ { "cell_type": "code", "execution_count": 36, - "id": "b3c811ab", + "id": "6b472907", "metadata": {}, "outputs": [ { @@ -1188,14 +1186,14 @@ ], "source": [ "output = general_julia(mesh, f=accident, num_iter=15, c=0, radius=np.pi)\n", - "kwargs = {'title': 'Accidental \\ fractal', 'cmap': 'Blues'}\n", + "kwargs = {'title': 'Accidental \\\\ fractal', 'cmap': 'Blues'}\n", "\n", "plot_fractal(output, **kwargs);" ] }, { "cell_type": "markdown", - "id": "5938ef4d", + "id": "78ab6953", "metadata": {}, "source": [ "Needless to say, there are a nearly endless supply of interesting fractal creations that can be made just by playing around with various combinations of NumPy universal functions and by tinkering with the parameters." @@ -1203,7 +1201,7 @@ }, { "cell_type": "markdown", - "id": "c03c3655", + "id": "e64692f3", "metadata": {}, "source": [ "## In conclusion\n", @@ -1221,7 +1219,7 @@ }, { "cell_type": "markdown", - "id": "38087b0a", + "id": "8f78ff69", "metadata": {}, "source": [ "## On your own\n", @@ -1233,7 +1231,7 @@ }, { "cell_type": "markdown", - "id": "bc504f0a", + "id": "14675352", "metadata": {}, "source": [ "## Further reading\n", @@ -1320,38 +1318,38 @@ 346, 358, 362, - 375, - 379, - 389, - 403, - 409, - 412, - 416, - 420, - 425, - 435, - 444, - 449, - 459, - 472, - 476, - 481, - 485, - 498, - 503, - 508, - 516, - 521, - 526, - 532, - 537, - 542, - 546, - 551, - 556, - 560, - 574, - 582 + 373, + 377, + 387, + 401, + 407, + 410, + 414, + 418, + 423, + 433, + 442, + 447, + 457, + 470, + 474, + 479, + 483, + 496, + 501, + 506, + 514, + 519, + 524, + 530, + 535, + 540, + 544, + 549, + 554, + 558, + 572, + 580 ] }, "nbformat": 4, diff --git a/_sources/content/tutorial-plotting-fractals.md b/_sources/content/tutorial-plotting-fractals.md index e97b0cbe..a1921cea 100644 --- a/_sources/content/tutorial-plotting-fractals.md +++ b/_sources/content/tutorial-plotting-fractals.md @@ -301,14 +301,14 @@ For example, setting $c = \frac{\pi}{10}$ gives us a very elegant cloud shape, w ```{code-cell} ipython3 output = julia(mesh, c=np.pi/10, num_iter=20) -kwargs = {'title': 'f(z) = z^2 + \dfrac{\pi}{10}', 'cmap': 'plasma'} +kwargs = {'title': r'f(z) = z^2 + \dfrac{\pi}{10}', 'cmap': 'plasma'} plot_fractal(output, **kwargs); ``` ```{code-cell} ipython3 output = julia(mesh, c=-0.75 + 0.4j, num_iter=20) -kwargs = {'title': 'f(z) = z^2 - \dfrac{3}{4} + 0.4i', 'cmap': 'Greens_r'} +kwargs = {'title': r'f(z) = z^2 - \dfrac{3}{4} + 0.4i', 'cmap': 'Greens_r'} plot_fractal(output, **kwargs); ``` @@ -334,7 +334,7 @@ def mandelbrot(mesh, num_iter=10, radius=2): ```{code-cell} ipython3 output = mandelbrot(mesh, num_iter=50) -kwargs = {'title': 'Mandelbrot \ set', 'cmap': 'hot'} +kwargs = {'title': 'Mandelbrot \\ set', 'cmap': 'hot'} plot_fractal(output, **kwargs); ``` @@ -370,8 +370,6 @@ for deg, ax in enumerate(axes.ravel()): diverge_len = general_julia(mesh, f=power, num_iter=15) ax.imshow(diverge_len, extent=[-2, 2, -2, 2], cmap='binary') ax.set_title(f'$f(z) = z^{degree} -1$') - -fig.tight_layout(); ``` Needless to say, there is a large amount of exploring that can be done by fiddling with the inputted function, value of $c$, number of iterations, radius and even the density of the mesh and choice of colours. @@ -419,7 +417,7 @@ p.deriv() ```{code-cell} ipython3 output = newton_fractal(mesh, p, p.deriv(), num_iter=15, r=2) -kwargs = {'title': 'f(z) = z - \dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'} +kwargs = {'title': r'f(z) = z - \dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'} plot_fractal(output, **kwargs) ``` @@ -443,7 +441,7 @@ def d_tan(z): ```{code-cell} ipython3 output = newton_fractal(mesh, f_tan, d_tan, num_iter=15, r=50) -kwargs = {'title': 'f(z) = z - \dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'} +kwargs = {'title': r'f(z) = z - \dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'} plot_fractal(output, **kwargs); ``` @@ -475,7 +473,7 @@ We will denote this one 'Wacky fractal', as its equation would not be fun to try ```{code-cell} ipython3 output = newton_fractal(small_mesh, sin_sum, d_sin_sum, num_iter=10, r=1) -kwargs = {'title': 'Wacky \ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'} +kwargs = {'title': 'Wacky \\ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'} plot_fractal(output, **kwargs) ``` @@ -550,7 +548,7 @@ def accident(z): ```{code-cell} ipython3 output = general_julia(mesh, f=accident, num_iter=15, c=0, radius=np.pi) -kwargs = {'title': 'Accidental \ fractal', 'cmap': 'Blues'} +kwargs = {'title': 'Accidental \\ fractal', 'cmap': 'Blues'} plot_fractal(output, **kwargs); ``` diff --git a/_sources/content/tutorial-static_equilibrium.ipynb b/_sources/content/tutorial-static_equilibrium.ipynb index 60c29979..44bc1e55 100644 --- a/_sources/content/tutorial-static_equilibrium.ipynb +++ b/_sources/content/tutorial-static_equilibrium.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "c3284a95", + "id": "16f46201", "metadata": {}, "source": [ "# Determining Static Equilibrium in NumPy\n", @@ -30,7 +30,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "aa8ecc3d", + "id": "cd574569", "metadata": {}, "outputs": [], "source": [ @@ -40,7 +40,7 @@ }, { "cell_type": "markdown", - "id": "4f6c7d41", + "id": "bea5fbbb", "metadata": {}, "source": [ "In this tutorial you will use the following NumPy tools:\n", @@ -51,7 +51,7 @@ }, { "cell_type": "markdown", - "id": "9890e591", + "id": "34649a4a", "metadata": {}, "source": [ "## Solving equilibrium with Newton's second law\n", @@ -80,7 +80,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "3d7087ca", + "id": "843160ed", "metadata": {}, "outputs": [ { @@ -101,7 +101,7 @@ }, { "cell_type": "markdown", - "id": "00d33a44", + "id": "173babc4", "metadata": {}, "source": [ "This defines `forceA` as being a vector with magnitude of 1 in the $x$ direction and `forceB` as magnitude 1 in the $y$ direction.\n", @@ -114,7 +114,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "de5bcb84", + "id": "602433e3", "metadata": {}, "outputs": [ { @@ -151,7 +151,7 @@ }, { "cell_type": "markdown", - "id": "4e64a33b", + "id": "69854315", "metadata": {}, "source": [ "There are two forces emanating from a single point. In order to simplify this problem, you can add them together to find the sum of forces. Note that both `forceA` and `forceB` are three-dimensional vectors, represented by NumPy as arrays with three components. Because NumPy is meant to simplify and optimize operations between vectors, you can easily compute the sum of these two vectors as follows:" @@ -160,7 +160,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "2228075e", + "id": "353c65e5", "metadata": {}, "outputs": [ { @@ -178,7 +178,7 @@ }, { "cell_type": "markdown", - "id": "feb18e80", + "id": "6b300b7d", "metadata": {}, "source": [ "Force C now acts as a single force that represents both A and B.\n", @@ -188,7 +188,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "75b9bcd2", + "id": "d000064a", "metadata": {}, "outputs": [ { @@ -226,7 +226,7 @@ }, { "cell_type": "markdown", - "id": "fa514989", + "id": "dc4ba786", "metadata": {}, "source": [ "However, the goal is equilibrium.\n", @@ -257,7 +257,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "caab81a2", + "id": "ae4b672d", "metadata": {}, "outputs": [ { @@ -292,7 +292,7 @@ }, { "cell_type": "markdown", - "id": "bd381ca3", + "id": "a1ea5be4", "metadata": {}, "source": [ "The empty graph signifies that there are no outlying forces. This denotes a system in equilibrium.\n", @@ -316,7 +316,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "fa6888de", + "id": "4f246afd", "metadata": {}, "outputs": [ { @@ -340,7 +340,7 @@ }, { "cell_type": "markdown", - "id": "b9a1b679", + "id": "d423ff7a", "metadata": {}, "source": [ "## Finding values with physical properties\n", @@ -361,7 +361,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "755cdd60", + "id": "7eb7ab14", "metadata": {}, "outputs": [ { @@ -386,7 +386,7 @@ }, { "cell_type": "markdown", - "id": "db760dc8", + "id": "80b0e468", "metadata": {}, "source": [ "In order to use these vectors in relation to forces you need to convert them into unit vectors.\n", @@ -396,7 +396,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "90808875", + "id": "9a71e416", "metadata": {}, "outputs": [ { @@ -414,7 +414,7 @@ }, { "cell_type": "markdown", - "id": "055e34ab", + "id": "9a7c44d5", "metadata": {}, "source": [ "You can then multiply this direction with the magnitude of the force in order to find the force vector.\n", @@ -425,7 +425,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "ad220ecb", + "id": "8334b90c", "metadata": {}, "outputs": [ { @@ -444,7 +444,7 @@ }, { "cell_type": "markdown", - "id": "e8b8d7ab", + "id": "bc6d9d39", "metadata": {}, "source": [ "In order to find the moment you need the cross product of the force vector and the radius." @@ -453,7 +453,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "064128f7", + "id": "31cf5d6d", "metadata": {}, "outputs": [ { @@ -471,7 +471,7 @@ }, { "cell_type": "markdown", - "id": "3484eeca", + "id": "cdc1b05b", "metadata": {}, "source": [ "Now all you need to do is find the reaction force and moment." @@ -480,7 +480,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "05026e87", + "id": "61d6b740", "metadata": {}, "outputs": [ { @@ -502,7 +502,7 @@ }, { "cell_type": "markdown", - "id": "bbe3bba2", + "id": "61e7a15e", "metadata": {}, "source": [ "### Another Example\n", @@ -520,7 +520,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "93d38a95", + "id": "84eefc41", "metadata": {}, "outputs": [], "source": [ @@ -534,7 +534,7 @@ }, { "cell_type": "markdown", - "id": "fa79d886", + "id": "ac5cbc77", "metadata": {}, "source": [ "From these equations, you start by determining vector directions with unit vectors." @@ -543,7 +543,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "35538974", + "id": "68130f5a", "metadata": {}, "outputs": [], "source": [ @@ -564,7 +564,7 @@ }, { "cell_type": "markdown", - "id": "65701755", + "id": "d8412724", "metadata": {}, "source": [ "This lets you represent the tension (T) and reaction (R) forces acting on the system as\n", @@ -645,7 +645,7 @@ }, { "cell_type": "markdown", - "id": "b1ea7088", + "id": "151721bb", "metadata": {}, "source": [ "## Wrapping up\n", diff --git a/_sources/content/tutorial-style-guide.ipynb b/_sources/content/tutorial-style-guide.ipynb index 0e767e0a..85431922 100644 --- a/_sources/content/tutorial-style-guide.ipynb +++ b/_sources/content/tutorial-style-guide.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "f50d44f5", + "id": "df8640b3", "metadata": {}, "source": [ "# Learn to write a NumPy tutorial\n", @@ -13,7 +13,7 @@ }, { "cell_type": "markdown", - "id": "371a8a5c", + "id": "d294370d", "metadata": {}, "source": [ "## What you'll do\n", @@ -125,7 +125,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "bd3aecf8", + "id": "5a6dbed8", "metadata": {}, "outputs": [], "source": [ @@ -134,7 +134,7 @@ }, { "cell_type": "markdown", - "id": "6835641a", + "id": "de38241a", "metadata": {}, "source": [ "
\n", @@ -151,7 +151,7 @@ }, { "cell_type": "markdown", - "id": "daeb422f", + "id": "1757d12f", "metadata": {}, "source": [ "***\n", diff --git a/_sources/content/tutorial-svd.ipynb b/_sources/content/tutorial-svd.ipynb index 2c476950..7f0d0965 100644 --- a/_sources/content/tutorial-svd.ipynb +++ b/_sources/content/tutorial-svd.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "35d390f0", + "id": "55778a07", "metadata": {}, "source": [ "# Linear algebra on n-dimensional arrays" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "06696caa", + "id": "f7211a9d", "metadata": {}, "source": [ "## Prerequisites\n", @@ -33,33 +33,36 @@ "\n", "## Content\n", "\n", - "In this tutorial, we will use a [matrix decomposition](https://en.wikipedia.org/wiki/Matrix_decomposition) from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We'll use the `face` image from the [scipy.misc](https://docs.scipy.org/doc/scipy/reference/misc.html#module-scipy.misc) module:" + "In this tutorial, we will use a [matrix decomposition](https://en.wikipedia.org/wiki/Matrix_decomposition) from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We'll use the `face` image from the [scipy.datasets](https://docs.scipy.org/doc/scipy/reference/datasets.html) module:" ] }, { "cell_type": "code", "execution_count": 1, - "id": "f8fd3c35", + "id": "e3a6f3ea", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_432/2202046956.py:3: DeprecationWarning: scipy.misc.face has been deprecated in SciPy v1.10.0; and will be completely removed in SciPy v1.12.0. Dataset methods have moved into the scipy.datasets module. Use scipy.datasets.face instead.\n", - " img = misc.face()\n" + "Downloading file 'face.dat' from 'https://raw.githubusercontent.com/scipy/dataset-face/main/face.dat' to '/home/circleci/.cache/scipy-data'.\n" ] } ], "source": [ - "from scipy import misc\n", + "# TODO: Rm try-except with scipy 1.10 is the minimum supported version\n", + "try:\n", + " from scipy.datasets import face\n", + "except ImportError: # Data was in scipy.misc prior to scipy v1.10\n", + " from scipy.misc import face\n", "\n", - "img = misc.face()" + "img = face()" ] }, { "cell_type": "markdown", - "id": "1a2f2204", + "id": "b5871108", "metadata": {}, "source": [ "**Note**: If you prefer, you can use your own image as you work through this tutorial. In order to transform your image into a NumPy array that can be manipulated, you can use the `imread` function from the [matplotlib.pyplot](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot) submodule. Alternatively, you can use the [imageio.imread](https://imageio.readthedocs.io/en/stable/userapi.html#imageio.imread) function from the `imageio` library. Be aware that if you use your own image, you'll likely need to adapt the steps below. For more information on how images are treated when converted to NumPy arrays, see [A crash course on NumPy for images](https://scikit-image.org/docs/stable/user_guide/numpy_images.html) from the `scikit-image` documentation." @@ -67,7 +70,7 @@ }, { "cell_type": "markdown", - "id": "fb20ca80", + "id": "5726d0f6", "metadata": {}, "source": [ "Now, `img` is a NumPy array, as we can see when using the `type` function:" @@ -76,7 +79,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "4375c87a", + "id": "b6872e46", "metadata": {}, "outputs": [ { @@ -96,7 +99,7 @@ }, { "cell_type": "markdown", - "id": "bf6e29a4", + "id": "fab5e820", "metadata": {}, "source": [ "We can see the image using the [matplotlib.pyplot.imshow](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.imshow.html#matplotlib.pyplot.imshow) function & the special iPython command, `%matplotlib inline` to display plots inline:" @@ -105,7 +108,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "6fb28abd", + "id": "ee5e88c2", "metadata": {}, "outputs": [], "source": [ @@ -117,7 +120,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "5a84491d", + "id": "87f04764", "metadata": {}, "outputs": [ { @@ -138,7 +141,7 @@ }, { "cell_type": "markdown", - "id": "69f48069", + "id": "20f9e46b", "metadata": {}, "source": [ "### Shape, axis and array properties\n", @@ -151,7 +154,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "97d849f5", + "id": "0858da56", "metadata": {}, "outputs": [ { @@ -171,7 +174,7 @@ }, { "cell_type": "markdown", - "id": "93734557", + "id": "96bc5fe0", "metadata": {}, "source": [ "The output is a [tuple](https://docs.python.org/dev/tutorial/datastructures.html#tut-tuples) with three elements, which means that this is a three-dimensional array. In fact, since this is a color image, and we have used the `imread` function to read it, the data is organized in three 2D arrays, representing color channels (in this case, red, green and blue - RGB). You can see this by looking at the shape above: it indicates that we have an array of 3 matrices, each having shape 768x1024.\n", @@ -182,7 +185,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "e78095ad", + "id": "51468e67", "metadata": {}, "outputs": [ { @@ -202,7 +205,7 @@ }, { "cell_type": "markdown", - "id": "099af5c0", + "id": "4e3ac6ab", "metadata": {}, "source": [ "NumPy refers to each dimension as an *axis*. Because of how `imread` works, the *first index in the 3rd axis* is the red pixel data for our image. We can access this by using the syntax" @@ -211,7 +214,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "b72a420e", + "id": "773f901f", "metadata": {}, "outputs": [ { @@ -237,11 +240,11 @@ }, { "cell_type": "markdown", - "id": "7c0a868b", + "id": "eca1435e", "metadata": {}, "source": [ "From the output above, we can see that every value in `img[:, :, 0]` is an integer value between 0 and 255, representing the level of red in each corresponding image pixel (keep in mind that this might be different if you\n", - "use your own image instead of [scipy.misc.face](https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.face.html#scipy.misc.face)).\n", + "use your own image instead of [scipy.datasets.face](https://docs.scipy.org/doc/scipy/reference/generated/scipy.datasets.face.html)).\n", "\n", "As expected, this is a 768x1024 matrix:" ] @@ -249,7 +252,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "e649b174", + "id": "0b98d3ea", "metadata": {}, "outputs": [ { @@ -269,7 +272,7 @@ }, { "cell_type": "markdown", - "id": "dd6f3c13", + "id": "93fec39c", "metadata": {}, "source": [ "Since we are going to perform linear algebra operations on this data, it might be more interesting to have real numbers between 0 and 1 in each entry of the matrices to represent the RGB values. We can do that by setting" @@ -278,7 +281,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "7f1bad5b", + "id": "501b2bfc", "metadata": {}, "outputs": [], "source": [ @@ -287,7 +290,7 @@ }, { "cell_type": "markdown", - "id": "de7b4371", + "id": "23c9e7c1", "metadata": {}, "source": [ "This operation, dividing an array by a scalar, works because of NumPy's [broadcasting rules](https://numpy.org/devdocs/user/theory.broadcasting.html#array-broadcasting-in-numpy). (Note that in real-world applications, it would be better to use, for example, the [img_as_float](https://scikit-image.org/docs/stable/api/skimage.html#skimage.img_as_float) utility function from `scikit-image`).\n", @@ -299,7 +302,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "476e2330", + "id": "419eb750", "metadata": {}, "outputs": [ { @@ -319,7 +322,7 @@ }, { "cell_type": "markdown", - "id": "6d0d9436", + "id": "53cb7302", "metadata": {}, "source": [ "or checking the type of data in the array:" @@ -328,7 +331,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "1f3a8163", + "id": "519e918c", "metadata": {}, "outputs": [ { @@ -348,7 +351,7 @@ }, { "cell_type": "markdown", - "id": "287e7710", + "id": "aced4478", "metadata": {}, "source": [ "Note that we can assign each color channel to a separate matrix using the slice syntax:" @@ -357,7 +360,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "0e69fe01", + "id": "8067a09c", "metadata": {}, "outputs": [], "source": [ @@ -368,7 +371,7 @@ }, { "cell_type": "markdown", - "id": "b7e054f9", + "id": "88717018", "metadata": {}, "source": [ "### Operations on an axis\n", @@ -378,7 +381,7 @@ }, { "cell_type": "markdown", - "id": "f70a1cd0", + "id": "8800f5a0", "metadata": {}, "source": [ "**Note**: We will use NumPy's linear algebra module, [numpy.linalg](https://numpy.org/devdocs/reference/routines.linalg.html#module-numpy.linalg), to perform the operations in this tutorial. Most of the linear algebra functions in this module can also be found in [scipy.linalg](https://docs.scipy.org/doc/scipy/reference/linalg.html#module-scipy.linalg), and users are encouraged to use the [scipy](https://docs.scipy.org/doc/scipy/reference/index.html#module-scipy) module for real-world applications. However, some functions in the [scipy.linalg](https://docs.scipy.org/doc/scipy/reference/linalg.html#module-scipy.linalg) module, such as the SVD function, only support 2D arrays. For more information on this, check the [scipy.linalg page](https://docs.scipy.org/doc/scipy/tutorial/linalg.html)." @@ -386,7 +389,7 @@ }, { "cell_type": "markdown", - "id": "144512a9", + "id": "cdf1fba6", "metadata": {}, "source": [ "To proceed, import the linear algebra submodule from NumPy:" @@ -395,7 +398,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "74cd9997", + "id": "290b2645", "metadata": {}, "outputs": [], "source": [ @@ -404,7 +407,7 @@ }, { "cell_type": "markdown", - "id": "3950439f", + "id": "5aac6345", "metadata": {}, "source": [ "In order to extract information from a given matrix, we can use the SVD to obtain 3 arrays which can be multiplied to obtain the original matrix. From the theory of linear algebra, given a matrix $A$, the following product can be computed:\n", @@ -424,7 +427,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "7223a10b", + "id": "de65b74c", "metadata": {}, "outputs": [], "source": [ @@ -433,7 +436,7 @@ }, { "cell_type": "markdown", - "id": "a12d4756", + "id": "3f0ecee7", "metadata": {}, "source": [ "Now, `img_gray` has shape" @@ -442,7 +445,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "e58c11ab", + "id": "279012fb", "metadata": {}, "outputs": [ { @@ -462,7 +465,7 @@ }, { "cell_type": "markdown", - "id": "0716b3ee", + "id": "38d9884e", "metadata": {}, "source": [ "To see if this makes sense in our image, we should use a colormap from `matplotlib` corresponding to the color we wish to see in out image (otherwise, `matplotlib` will default to a colormap that does not correspond to the real data).\n", @@ -473,7 +476,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "108412a3", + "id": "eb667700", "metadata": {}, "outputs": [ { @@ -494,7 +497,7 @@ }, { "cell_type": "markdown", - "id": "ec688e39", + "id": "4876ed10", "metadata": {}, "source": [ "Now, applying the [linalg.svd](https://numpy.org/devdocs/reference/generated/numpy.linalg.svd.html#numpy.linalg.svd) function to this matrix, we obtain the following decomposition:" @@ -503,7 +506,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "1ea89d14", + "id": "5ec843dd", "metadata": {}, "outputs": [], "source": [ @@ -512,7 +515,7 @@ }, { "cell_type": "markdown", - "id": "27f2ecb8", + "id": "111417fc", "metadata": {}, "source": [ "**Note** If you are using your own image, this command might take a while to run, depending on the size of your image and your hardware. Don't worry, this is normal! The SVD can be a pretty intensive computation." @@ -520,7 +523,7 @@ }, { "cell_type": "markdown", - "id": "b865a04d", + "id": "369398c5", "metadata": {}, "source": [ "Let's check that this is what we expected:" @@ -529,7 +532,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "bf4393c3", + "id": "e60d7fae", "metadata": {}, "outputs": [ { @@ -549,7 +552,7 @@ }, { "cell_type": "markdown", - "id": "a80c3a75", + "id": "1b0dea96", "metadata": {}, "source": [ "Note that `s` has a particular shape: it has only one dimension. This means that some linear algebra functions that expect 2d arrays might not work. For example, from the theory, one might expect `s` and `Vt` to be\n", @@ -565,7 +568,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "a7541fa0", + "id": "4622326b", "metadata": {}, "outputs": [], "source": [ @@ -577,7 +580,7 @@ }, { "cell_type": "markdown", - "id": "1a4b7d22", + "id": "9c2b58aa", "metadata": {}, "source": [ "Now, we want to check if the reconstructed `U @ Sigma @ Vt` is close to the original `img_gray` matrix." @@ -585,7 +588,7 @@ }, { "cell_type": "markdown", - "id": "117cb10b", + "id": "43fd2467", "metadata": {}, "source": [ "## Approximation\n", @@ -596,7 +599,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "ce6bec4e", + "id": "9d6f1378", "metadata": {}, "outputs": [ { @@ -616,7 +619,7 @@ }, { "cell_type": "markdown", - "id": "67b18335", + "id": "56d014ef", "metadata": {}, "source": [ "(The actual result of this operation might be different depending on your architecture and linear algebra setup. Regardless, you should see a small number.)\n", @@ -627,7 +630,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "fcfab9e4", + "id": "ec054073", "metadata": {}, "outputs": [ { @@ -647,7 +650,7 @@ }, { "cell_type": "markdown", - "id": "f5c1c587", + "id": "26847802", "metadata": {}, "source": [ "To see if an approximation is reasonable, we can check the values in `s`:" @@ -656,7 +659,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "450cbc0f", + "id": "a83bdc0d", "metadata": {}, "outputs": [ { @@ -677,7 +680,7 @@ }, { "cell_type": "markdown", - "id": "f10ef8f5", + "id": "c796e73c", "metadata": {}, "source": [ "In the graph, we can see that although we have 768 singular values in `s`, most of those (after the 150th entry or so) are pretty small. So it might make sense to use only the information related to the first (say, 50) *singular values* to build a more economical approximation to our image.\n", @@ -690,7 +693,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "dee35b20", + "id": "1afeeae9", "metadata": {}, "outputs": [], "source": [ @@ -699,7 +702,7 @@ }, { "cell_type": "markdown", - "id": "4807b672", + "id": "62c2d738", "metadata": {}, "source": [ "we can build the approximation by doing" @@ -708,7 +711,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "3b2cce28", + "id": "c94f3bb9", "metadata": {}, "outputs": [], "source": [ @@ -717,7 +720,7 @@ }, { "cell_type": "markdown", - "id": "4476cf61", + "id": "ee1249e2", "metadata": {}, "source": [ "Note that we had to use only the first `k` rows of `Vt`, since all other rows would be multiplied by the zeros corresponding to the singular values we eliminated from this approximation." @@ -726,7 +729,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "7b937fe3", + "id": "2b6b3594", "metadata": {}, "outputs": [ { @@ -747,7 +750,7 @@ }, { "cell_type": "markdown", - "id": "c3314308", + "id": "3504a30a", "metadata": {}, "source": [ "Now, you can go ahead and repeat this experiment with other values of `k`, and each of your experiments should give you a slightly better (or worse) image depending on the value you choose." @@ -755,7 +758,7 @@ }, { "cell_type": "markdown", - "id": "7bbee310", + "id": "9a5e4134", "metadata": {}, "source": [ "### Applying to all colors\n", @@ -771,7 +774,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "ee285b4d", + "id": "89232c13", "metadata": {}, "outputs": [ { @@ -791,7 +794,7 @@ }, { "cell_type": "markdown", - "id": "f8debec8", + "id": "28bd20b7", "metadata": {}, "source": [ "so we need to permutate the axis on this array to get a shape like `(3, 768, 1024)`. Fortunately, the [numpy.transpose](https://numpy.org/devdocs/reference/generated/numpy.transpose.html#numpy.transpose) function can do that for us:\n", @@ -806,7 +809,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "97def504", + "id": "d22dc7fd", "metadata": {}, "outputs": [ { @@ -827,7 +830,7 @@ }, { "cell_type": "markdown", - "id": "6bd180de", + "id": "871c2efd", "metadata": {}, "source": [ "Now we are ready to apply the SVD:" @@ -836,7 +839,7 @@ { "cell_type": "code", "execution_count": 28, - "id": "06b31b0d", + "id": "b7a18140", "metadata": {}, "outputs": [], "source": [ @@ -845,7 +848,7 @@ }, { "cell_type": "markdown", - "id": "e13471cf", + "id": "4eb94955", "metadata": {}, "source": [ "Finally, to obtain the full approximated image, we need to reassemble these matrices into the approximation. Now, note that" @@ -854,7 +857,7 @@ { "cell_type": "code", "execution_count": 29, - "id": "5c3ffb10", + "id": "eaf450ac", "metadata": {}, "outputs": [ { @@ -874,7 +877,7 @@ }, { "cell_type": "markdown", - "id": "3f67afef", + "id": "a69d5396", "metadata": {}, "source": [ "To build the final approximation matrix, we must understand how multiplication across different axes works." @@ -882,7 +885,7 @@ }, { "cell_type": "markdown", - "id": "ad43b9e3", + "id": "11676ba0", "metadata": {}, "source": [ "### Products with n-dimensional arrays\n", @@ -895,7 +898,7 @@ { "cell_type": "code", "execution_count": 30, - "id": "49d4d4ed", + "id": "1815f13f", "metadata": {}, "outputs": [], "source": [ @@ -906,7 +909,7 @@ }, { "cell_type": "markdown", - "id": "86124ae2", + "id": "992b92b6", "metadata": {}, "source": [ "Now, if we wish to rebuild the full SVD (with no approximation), we can do" @@ -915,7 +918,7 @@ { "cell_type": "code", "execution_count": 31, - "id": "af0a9a26", + "id": "32a13c41", "metadata": {}, "outputs": [], "source": [ @@ -924,7 +927,7 @@ }, { "cell_type": "markdown", - "id": "32bf9f61", + "id": "3f0bf6f0", "metadata": {}, "source": [ "Note that" @@ -933,7 +936,7 @@ { "cell_type": "code", "execution_count": 32, - "id": "c568e252", + "id": "6802d13e", "metadata": {}, "outputs": [ { @@ -953,7 +956,7 @@ }, { "cell_type": "markdown", - "id": "36735e18", + "id": "b23c9950", "metadata": {}, "source": [ "The reconstructed image should be indistinguishable from the original one, except for differences due to floating point errors from the reconstruction. Recall that our original image consisted of floating point values in the range `[0., 1.]`. The accumulation of floating point error from the reconstruction can result in values slightly outside this original range:" @@ -962,7 +965,7 @@ { "cell_type": "code", "execution_count": 33, - "id": "6bc72a89", + "id": "83e2ce53", "metadata": {}, "outputs": [ { @@ -982,7 +985,7 @@ }, { "cell_type": "markdown", - "id": "24bdbd0d", + "id": "578b1359", "metadata": {}, "source": [ "Since `imshow` expects values in the range, we can use `clip` to excise the floating point error:" @@ -991,7 +994,7 @@ { "cell_type": "code", "execution_count": 34, - "id": "ce689748", + "id": "25d370e9", "metadata": {}, "outputs": [ { @@ -1013,7 +1016,7 @@ }, { "cell_type": "markdown", - "id": "71db0b6b", + "id": "82afa748", "metadata": {}, "source": [ "In fact, `imshow` peforms this clipping under-the-hood, so if you skip the first line in the previous code cell, you might see a warning message saying `\"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\"`\n", @@ -1024,7 +1027,7 @@ { "cell_type": "code", "execution_count": 35, - "id": "5997dd7d", + "id": "2f17a0b0", "metadata": {}, "outputs": [], "source": [ @@ -1033,7 +1036,7 @@ }, { "cell_type": "markdown", - "id": "efd49900", + "id": "7b7e5e9b", "metadata": {}, "source": [ "You can see that we have selected only the first `k` components of the last axis for `Sigma` (this means that we have used only the first `k` columns of each of the three matrices in the stack), and that we have selected only the first `k` components in the second-to-last axis of `Vt` (this means we have selected only the first `k` rows from every matrix in the stack `Vt` and all columns). If you are unfamiliar with the ellipsis syntax, it is a\n", @@ -1045,7 +1048,7 @@ { "cell_type": "code", "execution_count": 36, - "id": "ca13ecaf", + "id": "323067bb", "metadata": {}, "outputs": [ { @@ -1065,7 +1068,7 @@ }, { "cell_type": "markdown", - "id": "82e1e51b", + "id": "3d539093", "metadata": {}, "source": [ "which is not the right shape for showing the image. Finally, reordering the axes back to our original shape of `(768, 1024, 3)`, we can see our approximation:" @@ -1074,7 +1077,7 @@ { "cell_type": "code", "execution_count": 37, - "id": "a7a2aa72", + "id": "1561cb2b", "metadata": {}, "outputs": [ { @@ -1102,7 +1105,7 @@ }, { "cell_type": "markdown", - "id": "002b7a1b", + "id": "1bab028c", "metadata": {}, "source": [ "Even though the image is not as sharp, using a small number of `k` singular values (compared to the original set of 768 values), we can recover many of the distinguishing features from this image." @@ -1110,7 +1113,7 @@ }, { "cell_type": "markdown", - "id": "8f963c89", + "id": "295e7579", "metadata": {}, "source": [ "### Final words\n", @@ -1158,86 +1161,86 @@ 12, 16, 40, - 44, 48, 52, - 54, + 56, 58, - 64, - 67, - 75, - 77, - 83, - 85, + 62, + 68, + 71, + 79, + 81, + 87, 89, - 91, - 98, - 100, + 93, + 95, + 102, 104, - 106, - 113, - 115, + 108, + 110, + 117, 119, - 121, + 123, 125, 129, - 135, + 133, 139, 143, - 145, - 160, - 162, + 147, + 149, + 164, 166, - 168, - 174, - 177, + 170, + 172, + 178, 181, - 183, + 185, 187, 191, - 193, - 204, - 209, + 195, + 197, + 208, 213, - 219, - 221, - 227, - 229, + 217, + 223, + 225, + 231, 233, - 236, - 244, - 246, + 237, + 240, + 248, 250, - 252, + 254, 256, - 259, + 260, 263, - 274, - 276, - 286, - 289, + 267, + 278, + 280, + 290, 293, - 295, + 297, 299, - 301, + 303, 305, - 313, + 309, 317, 321, - 323, + 325, 327, - 329, + 331, 333, - 335, + 337, 339, 343, - 349, - 351, - 358, - 360, + 347, + 353, + 355, + 362, 364, - 367, - 371 + 368, + 371, + 375 ] }, "nbformat": 4, diff --git a/_sources/content/tutorial-svd.md b/_sources/content/tutorial-svd.md index a1fe60a4..3798636a 100644 --- a/_sources/content/tutorial-svd.md +++ b/_sources/content/tutorial-svd.md @@ -35,12 +35,16 @@ After this tutorial, you should be able to: ## Content -In this tutorial, we will use a [matrix decomposition](https://en.wikipedia.org/wiki/Matrix_decomposition) from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We'll use the `face` image from the [scipy.misc](https://docs.scipy.org/doc/scipy/reference/misc.html#module-scipy.misc) module: +In this tutorial, we will use a [matrix decomposition](https://en.wikipedia.org/wiki/Matrix_decomposition) from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We'll use the `face` image from the [scipy.datasets](https://docs.scipy.org/doc/scipy/reference/datasets.html) module: ```{code-cell} -from scipy import misc +# TODO: Rm try-except with scipy 1.10 is the minimum supported version +try: + from scipy.datasets import face +except ImportError: # Data was in scipy.misc prior to scipy v1.10 + from scipy.misc import face -img = misc.face() +img = face() ``` **Note**: If you prefer, you can use your own image as you work through this tutorial. In order to transform your image into a NumPy array that can be manipulated, you can use the `imread` function from the [matplotlib.pyplot](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot) submodule. Alternatively, you can use the [imageio.imread](https://imageio.readthedocs.io/en/stable/userapi.html#imageio.imread) function from the `imageio` library. Be aware that if you use your own image, you'll likely need to adapt the steps below. For more information on how images are treated when converted to NumPy arrays, see [A crash course on NumPy for images](https://scikit-image.org/docs/stable/user_guide/numpy_images.html) from the `scikit-image` documentation. @@ -91,7 +95,7 @@ img[:, :, 0] ``` From the output above, we can see that every value in `img[:, :, 0]` is an integer value between 0 and 255, representing the level of red in each corresponding image pixel (keep in mind that this might be different if you -use your own image instead of [scipy.misc.face](https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.face.html#scipy.misc.face)). +use your own image instead of [scipy.datasets.face](https://docs.scipy.org/doc/scipy/reference/generated/scipy.datasets.face.html)). As expected, this is a 768x1024 matrix: diff --git a/_sources/content/tutorial-x-ray-image-processing.ipynb b/_sources/content/tutorial-x-ray-image-processing.ipynb index 344c33cf..263a7183 100644 --- a/_sources/content/tutorial-x-ray-image-processing.ipynb +++ b/_sources/content/tutorial-x-ray-image-processing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "2d990475", + "id": "40d686ae", "metadata": {}, "source": [ "# X-ray image processing" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "a308e93b", + "id": "683dce0f", "metadata": {}, "source": [ "This tutorial demonstrates how to read and process X-ray images with NumPy,\n", @@ -53,7 +53,7 @@ }, { "cell_type": "markdown", - "id": "aeb97e4f", + "id": "a4a550c4", "metadata": {}, "source": [ "## Prerequisites" @@ -61,7 +61,7 @@ }, { "cell_type": "markdown", - "id": "adb42afa", + "id": "94fe4332", "metadata": {}, "source": [ "The reader should have some knowledge of Python, NumPy arrays, and Matplotlib.\n", @@ -91,7 +91,7 @@ }, { "cell_type": "markdown", - "id": "4d27778d", + "id": "cc1055de", "metadata": {}, "source": [ "## Table of contents" @@ -99,7 +99,7 @@ }, { "cell_type": "markdown", - "id": "d0a6e16d", + "id": "7675348b", "metadata": {}, "source": [ "1. Examine an X-ray with `imageio`\n", @@ -114,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "84301bd4", + "id": "153950f8", "metadata": {}, "source": [ "## Examine an X-ray with `imageio`" @@ -122,7 +122,7 @@ }, { "cell_type": "markdown", - "id": "b44209de", + "id": "27875984", "metadata": {}, "source": [ "Let's begin with a simple example using just one X-ray image from the\n", @@ -134,7 +134,7 @@ }, { "cell_type": "markdown", - "id": "a73ecc0c", + "id": "fb62f997", "metadata": {}, "source": [ "**1.** Load the image with `imageio`:" @@ -143,7 +143,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "191687c3", + "id": "a1936a06", "metadata": {}, "outputs": [], "source": [ @@ -157,7 +157,7 @@ }, { "cell_type": "markdown", - "id": "f960cd49", + "id": "8dd8f11d", "metadata": {}, "source": [ "**2.** Check that its shape is 1024x1024 pixels and that the array is made up of\n", @@ -167,7 +167,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "6bf78212", + "id": "fd3c9ab3", "metadata": {}, "outputs": [ { @@ -186,7 +186,7 @@ }, { "cell_type": "markdown", - "id": "740e307d", + "id": "a4d0f4a9", "metadata": {}, "source": [ "**3.** Import `matplotlib` and display the image in a grayscale colormap:" @@ -195,7 +195,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "fff0c750", + "id": "cb579540", "metadata": {}, "outputs": [ { @@ -219,7 +219,7 @@ }, { "cell_type": "markdown", - "id": "e1b1e20c", + "id": "d543d678", "metadata": {}, "source": [ "## Combine images into a multidimensional array to demonstrate progression" @@ -227,7 +227,7 @@ }, { "cell_type": "markdown", - "id": "e44b2d3d", + "id": "046eadcd", "metadata": {}, "source": [ "In the next example, instead of 1 image you'll use 9 X-ray 1024x1024-pixel\n", @@ -242,7 +242,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "00ee8449", + "id": "31831eb5", "metadata": {}, "outputs": [], "source": [ @@ -256,7 +256,7 @@ }, { "cell_type": "markdown", - "id": "24d8e8c5", + "id": "10cee8a5", "metadata": {}, "source": [ "**2.** Check the shape of the new X-ray image array containing 9 stacked images:" @@ -265,7 +265,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "6aa1477a", + "id": "ac98d086", "metadata": {}, "outputs": [ { @@ -285,7 +285,7 @@ }, { "cell_type": "markdown", - "id": "95d05626", + "id": "147e654d", "metadata": {}, "source": [ "Note that the shape in the first dimension matches `num_imgs`, so the\n", @@ -298,7 +298,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "3b058f92", + "id": "a23a65c9", "metadata": {}, "outputs": [ { @@ -322,7 +322,7 @@ }, { "cell_type": "markdown", - "id": "ef160541", + "id": "13d69a77", "metadata": {}, "source": [ "**4.** In addition, it can be helpful to show the progress as an animation.\n", @@ -333,7 +333,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "bda73cc6", + "id": "7a30fb89", "metadata": {}, "outputs": [], "source": [ @@ -343,7 +343,7 @@ }, { "cell_type": "markdown", - "id": "7414fdda", + "id": "5257754f", "metadata": {}, "source": [ "Which gives us:\n", @@ -353,7 +353,7 @@ }, { "cell_type": "markdown", - "id": "de0f0ac3", + "id": "3c3a8576", "metadata": {}, "source": [ "When processing biomedical data, it can be useful to emphasize the 2D\n", @@ -365,7 +365,7 @@ }, { "cell_type": "markdown", - "id": "a872af06", + "id": "4a18b5db", "metadata": {}, "source": [ "### The Laplace filter with Gaussian second derivatives\n", @@ -382,7 +382,7 @@ }, { "cell_type": "markdown", - "id": "6ab17ab4", + "id": "187213eb", "metadata": {}, "source": [ "- The implementation of the Laplacian-Gaussian filter is relatively\n", @@ -395,7 +395,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "ac0f9818", + "id": "ea9c4c38", "metadata": {}, "outputs": [], "source": [ @@ -406,7 +406,7 @@ }, { "cell_type": "markdown", - "id": "7db065be", + "id": "ecb40b75", "metadata": {}, "source": [ "Display the original X-ray and the one with the Laplacian-Gaussian filter:" @@ -415,7 +415,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "a031c671", + "id": "a6e80f2c", "metadata": {}, "outputs": [ { @@ -443,7 +443,7 @@ }, { "cell_type": "markdown", - "id": "03c49dc5", + "id": "f63d902f", "metadata": {}, "source": [ "### The Gaussian gradient magnitude method\n", @@ -458,7 +458,7 @@ }, { "cell_type": "markdown", - "id": "f25debce", + "id": "63490d93", "metadata": {}, "source": [ "**1.** Call [`scipy.ndimage.gaussian_gradient_magnitude()`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.gaussian_gradient_magnitude.html)\n", @@ -469,7 +469,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "467df366", + "id": "a5173db0", "metadata": {}, "outputs": [], "source": [ @@ -478,7 +478,7 @@ }, { "cell_type": "markdown", - "id": "a7f3a78a", + "id": "d808cb7c", "metadata": {}, "source": [ "**2.** Display the original X-ray and the one with the Gaussian gradient filter:" @@ -487,7 +487,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "6c30afd8", + "id": "45f60bb6", "metadata": {}, "outputs": [ { @@ -515,7 +515,7 @@ }, { "cell_type": "markdown", - "id": "e7dadbf9", + "id": "fdabd024", "metadata": {}, "source": [ "### The Sobel-Feldman operator (the Sobel filter)\n", @@ -532,7 +532,7 @@ }, { "cell_type": "markdown", - "id": "e2fce240", + "id": "421f9d12", "metadata": {}, "source": [ "**1.** Use the Sobel filters — ([`scipy.ndimage.sobel()`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.sobel.html))\n", @@ -552,7 +552,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "34b6b590", + "id": "a0480f6d", "metadata": {}, "outputs": [], "source": [ @@ -566,7 +566,7 @@ }, { "cell_type": "markdown", - "id": "8ced8465", + "id": "7d09568a", "metadata": {}, "source": [ "**2.** Change the new image array data type to the 32-bit floating-point format\n", @@ -577,7 +577,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "1ba68a1e", + "id": "e70ef09d", "metadata": {}, "outputs": [ { @@ -599,7 +599,7 @@ }, { "cell_type": "markdown", - "id": "24bef455", + "id": "28cce782", "metadata": {}, "source": [ "**3.** Display the original X-ray and the one with the Sobel \"edge\" filter\n", @@ -610,7 +610,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "6c7fe72a", + "id": "700c5b3f", "metadata": {}, "outputs": [ { @@ -640,7 +640,7 @@ }, { "cell_type": "markdown", - "id": "1419db43", + "id": "7b3d42c7", "metadata": {}, "source": [ "### The Canny filter\n", @@ -665,7 +665,7 @@ }, { "cell_type": "markdown", - "id": "5b214e0a", + "id": "0ea3efd9", "metadata": {}, "source": [ "**1.** Use SciPy's Fourier filters — [`scipy.ndimage.fourier_gaussian()`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.fourier_gaussian.html)\n", @@ -679,7 +679,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "1471490b", + "id": "d606cc99", "metadata": {}, "outputs": [ { @@ -705,7 +705,7 @@ }, { "cell_type": "markdown", - "id": "3c58f073", + "id": "8d452bed", "metadata": {}, "source": [ "**2.** Plot the original X-ray image and the ones with the edges detected with\n", @@ -716,7 +716,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "cf20de27", + "id": "38239cfb", "metadata": {}, "outputs": [ { @@ -748,7 +748,7 @@ }, { "cell_type": "markdown", - "id": "b53dd9a1", + "id": "4302159b", "metadata": {}, "source": [ "## Apply masks to X-rays with `np.where()`" @@ -756,7 +756,7 @@ }, { "cell_type": "markdown", - "id": "e063b74c", + "id": "d6e1d0f1", "metadata": {}, "source": [ "To screen out only certain pixels in X-ray images to help detect particular\n", @@ -771,7 +771,7 @@ }, { "cell_type": "markdown", - "id": "d9e35c30", + "id": "1375f098", "metadata": {}, "source": [ "**1.** Retrieve some basics statistics about the pixel values in the original\n", @@ -781,7 +781,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "536a143b", + "id": "2d5ccc8e", "metadata": {}, "outputs": [ { @@ -806,7 +806,7 @@ }, { "cell_type": "markdown", - "id": "3499a323", + "id": "444c061b", "metadata": {}, "source": [ "**2.** The array data type is `uint8` and the minimum/maximum value results\n", @@ -818,7 +818,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "c54b3369", + "id": "46f0c978", "metadata": {}, "outputs": [ { @@ -844,7 +844,7 @@ }, { "cell_type": "markdown", - "id": "61c100a8", + "id": "05d94023", "metadata": {}, "source": [ "As the pixel intensity distribution suggests, there are many low (between around\n", @@ -858,7 +858,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "cbb61e74", + "id": "33f17e75", "metadata": {}, "outputs": [ { @@ -885,7 +885,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "ecb70de9", + "id": "86984d33", "metadata": {}, "outputs": [ { @@ -911,7 +911,7 @@ }, { "cell_type": "markdown", - "id": "aa53e045", + "id": "5f6f34b5", "metadata": {}, "source": [ "## Compare the results" @@ -919,7 +919,7 @@ }, { "cell_type": "markdown", - "id": "78a7c753", + "id": "a5c41bea", "metadata": {}, "source": [ "Let's display some of the results of processed X-ray images you've worked with\n", @@ -929,7 +929,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "5f62b6ab", + "id": "0548cc99", "metadata": {}, "outputs": [ { @@ -971,7 +971,7 @@ }, { "cell_type": "markdown", - "id": "d2233818", + "id": "b2e6d78d", "metadata": {}, "source": [ "## Next steps" @@ -979,7 +979,7 @@ }, { "cell_type": "markdown", - "id": "3cb0d032", + "id": "621a06f0", "metadata": {}, "source": [ "If you want to use your own samples, you can use\n", diff --git a/content/mooreslaw-tutorial.html b/content/mooreslaw-tutorial.html index 8fdd8a62..118b2170 100644 --- a/content/mooreslaw-tutorial.html +++ b/content/mooreslaw-tutorial.html @@ -890,7 +890,7 @@

Calculating the historical growth curve for transistors
19200000000.0 250000000.0 7050000000.0
 

-
<matplotlib.legend.Legend at 0x7f0b617c1c90>
+
<matplotlib.legend.Legend at 0x7f87900fe950>
 
../_images/b9143a884ec8776a0b94987e50a2d4d51f1281c69d1627da25b80d029388ce22.png diff --git a/content/save-load-arrays.html b/content/save-load-arrays.html index a2765e83..39eb6b60 100644 --- a/content/save-load-arrays.html +++ b/content/save-load-arrays.html @@ -634,7 +634,7 @@

Remove the saved arrays and load them back with NumPy’s
-
whos
+
%whos
 
diff --git a/content/tutorial-air-quality-analysis.html b/content/tutorial-air-quality-analysis.html index 484dc2df..3ad1bb86 100644 --- a/content/tutorial-air-quality-analysis.html +++ b/content/tutorial-air-quality-analysis.html @@ -858,7 +858,7 @@

Calculating the test statistics -
The t value is -5.84285569186369 and the p value is 1.2266697972219608e-06.
+
The t value is -7.836332143875384 and the p value is 6.071929048036322e-09.
 
diff --git a/content/tutorial-ma.html b/content/tutorial-ma.html index 77648137..9a8f5b85 100644 --- a/content/tutorial-ma.html +++ b/content/tutorial-ma.html @@ -879,7 +879,7 @@

Fitting Data -

-../_images/774c0c53a1edfeb533e6940c2abf97431945fef9b1c9abb03b5e3f284205fc1b.png +../_images/ebd2ae94d8d5dfb90da758ca431e4ef320d7e07bc55d97a85c3ee10d91b96921.png

Needless to say, there is a large amount of exploring that can be done by fiddling with the inputted function, value of \(c\), number of iterations, radius and even the density of the mesh and choice of colours.

@@ -948,7 +946,7 @@

Newton Fractals
output = newton_fractal(mesh, p, p.deriv(), num_iter=15, r=2)
-kwargs = {'title': 'f(z) = z - \dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'}
+kwargs = {'title': r'f(z) = z - \dfrac{(z^8 + 15z^4 - 16)}{(8z^7 + 60z^3)}', 'cmap': 'copper'}
 
 plot_fractal(output, **kwargs)
 
@@ -977,7 +975,7 @@

Newton Fractals
output = newton_fractal(mesh, f_tan, d_tan, num_iter=15, r=50)
-kwargs = {'title': 'f(z) = z - \dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'}
+kwargs = {'title': r'f(z) = z - \dfrac{sin(z)cos(z)}{2}', 'cmap': 'binary'}
 
 plot_fractal(output, **kwargs);
 
@@ -1013,7 +1011,7 @@

Newton Fractals
output = newton_fractal(small_mesh, sin_sum, d_sin_sum, num_iter=10, r=1)
-kwargs = {'title': 'Wacky \ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'}
+kwargs = {'title': 'Wacky \\ fractal', 'figsize': (6, 6), 'extent': [-1, 1, -1, 1], 'cmap': 'terrain'}
 
 plot_fractal(output, **kwargs)
 
@@ -1112,7 +1110,7 @@

Creating your own fractals
output = general_julia(mesh, f=accident, num_iter=15, c=0, radius=np.pi)
-kwargs = {'title': 'Accidental \ fractal', 'cmap': 'Blues'}
+kwargs = {'title': 'Accidental \\ fractal', 'cmap': 'Blues'}
 
 plot_fractal(output, **kwargs);
 
diff --git a/content/tutorial-svd.html b/content/tutorial-svd.html index 0fb4fe2f..97af0d35 100644 --- a/content/tutorial-svd.html +++ b/content/tutorial-svd.html @@ -512,18 +512,21 @@

Learning Objectives

Content#

-

In this tutorial, we will use a matrix decomposition from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We’ll use the face image from the scipy.misc module:

+

In this tutorial, we will use a matrix decomposition from linear algebra, the Singular Value Decomposition, to generate a compressed approximation of an image. We’ll use the face image from the scipy.datasets module:

-
from scipy import misc
+
# TODO: Rm try-except with scipy 1.10 is the minimum supported version
+try:
+    from scipy.datasets import face
+except ImportError:  # Data was in scipy.misc prior to scipy v1.10
+    from scipy.misc import face
 
-img = misc.face()
+img = face()
 
-
/tmp/ipykernel_432/2202046956.py:3: DeprecationWarning: scipy.misc.face has been deprecated in SciPy v1.10.0; and will be completely removed in SciPy v1.12.0. Dataset methods have moved into the scipy.datasets module. Use scipy.datasets.face instead.
-  img = misc.face()
+
Downloading file 'face.dat' from 'https://raw.githubusercontent.com/scipy/dataset-face/main/face.dat' to '/home/circleci/.cache/scipy-data'.
 
@@ -613,7 +616,7 @@

Shape, axis and array propertiesimg[:, :, 0] is an integer value between 0 and 255, representing the level of red in each corresponding image pixel (keep in mind that this might be different if you -use your own image instead of scipy.misc.face).

+use your own image instead of scipy.datasets.face).

As expected, this is a 768x1024 matrix:

diff --git a/searchindex.js b/searchindex.js index 523b88f8..b022ddcb 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["applications", "articles", "content/mooreslaw-tutorial", "content/pairing", "content/save-load-arrays", "content/tutorial-air-quality-analysis", "content/tutorial-deep-learning-on-mnist", "content/tutorial-deep-reinforcement-learning-with-pong-from-pixels", "content/tutorial-ma", "content/tutorial-nlp-from-scratch", "content/tutorial-plotting-fractals", "content/tutorial-static_equilibrium", "content/tutorial-style-guide", "content/tutorial-svd", "content/tutorial-x-ray-image-processing", "contributing", "features", "index"], "filenames": ["applications.md", "articles.md", "content/mooreslaw-tutorial.md", "content/pairing.md", "content/save-load-arrays.md", "content/tutorial-air-quality-analysis.md", "content/tutorial-deep-learning-on-mnist.md", "content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.md", "content/tutorial-ma.md", "content/tutorial-nlp-from-scratch.md", "content/tutorial-plotting-fractals.md", "content/tutorial-static_equilibrium.md", "content/tutorial-style-guide.md", "content/tutorial-svd.md", "content/tutorial-x-ray-image-processing.md", "contributing.md", "features.md", "index.md"], "titles": ["NumPy Applications", "Articles", "Determining Moore\u2019s Law with real data in NumPy", "Pairing Jupyter notebooks and MyST-NB", "Saving and sharing your NumPy arrays", "Analyzing the impact of the lockdown on air quality in Delhi, India", "Deep learning on MNIST", "Deep reinforcement learning with Pong from pixels", "Masked Arrays", "Sentiment Analysis on notable speeches of the last decade", "Plotting Fractals", "Determining Static Equilibrium in NumPy", "Learn to write a NumPy tutorial", "Linear algebra on n-dimensional arrays", "X-ray image processing", "Contributing", "NumPy Features", "NumPy tutorials"], "terms": {"A": [0, 1, 2, 3, 5, 8, 9, 10, 11, 12, 13, 16], "collect": [0, 1, 5, 7, 15, 16], "highlight": 0, "us": [0, 2, 3, 5, 6, 7, 9, 10, 11, 13, 15], "scienc": [0, 14], "engin": [0, 2, 7, 11], "data": [0, 1, 5, 7, 10, 12, 13, 14, 15, 17], "analysi": [0, 1, 2, 5, 8, 14, 17], "determin": [0, 6, 7, 8, 9, 17], "moor": [0, 17], "": [0, 1, 3, 6, 7, 8, 10, 13, 14, 17], "law": [0, 17], "real": [0, 5, 6, 7, 8, 9, 10, 13, 15, 17], "deep": [0, 1, 2, 14, 17], "learn": [0, 1, 14, 15, 17], "mnist": [0, 2, 9, 17], "x": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 17], "rai": [0, 2, 17], "imag": [0, 2, 7, 9, 10, 12, 13, 15, 17], "process": [0, 2, 4, 5, 6, 7, 8, 9, 11, 17], "static": [0, 3, 15, 17], "equilibrium": [0, 17], "plot": [0, 2, 6, 7, 8, 9, 11, 13, 14, 17], "fractal": [0, 2, 17], "analyz": [0, 8, 11, 14, 17], "impact": [0, 6, 17], "lockdown": [0, 17], "air": [0, 2, 17], "qualiti": [0, 2, 6, 7, 17], "delhi": [0, 17], "india": [0, 17], "want": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17], "make": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17], "valuabl": [1, 17], "contribut": [1, 17], "consid": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 17], "work": [1, 3, 4, 6, 7, 8, 9, 10, 13, 14], "so": [1, 2, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "thei": [1, 2, 3, 6, 7, 9, 10, 11, 12, 13, 14], "becom": [1, 10], "fulli": [1, 9, 17], "execut": [1, 3, 6, 9, 13], "reproduc": [1, 6, 7, 9, 17], "reinforc": [1, 2, 9, 17], "pong": [1, 2, 17], "from": [1, 2, 4, 5, 8, 10, 11, 12, 13, 14, 17], "pixel": [1, 2, 6, 13, 14, 17], "prerequisit": [1, 12], "tabl": [1, 2, 5], "content": [1, 3], "note": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 17], "rl": 1, "glossari": 1, "set": [1, 2, 3, 5, 6, 8, 9, 13, 14, 17], "up": [1, 5, 6, 8, 9, 10, 14, 15], "preprocess": 1, "frame": [1, 14], "observ": [1, 2, 5, 8, 9, 11], "creat": [1, 3, 5, 6, 8, 9, 11, 14], "polici": [1, 9], "neural": 1, "network": 1, "forward": [1, 6], "pass": [1, 5, 6, 9, 10], "updat": [1, 3, 6, 15], "step": [1, 2, 4, 5, 12, 13, 15], "backpropag": [1, 6], "defin": [1, 2, 4, 6, 9, 10, 11, 13], "discount": 1, "reward": 1, "expect": [1, 2, 6, 9, 10, 13], "return": [1, 5, 6, 8, 9, 10, 12, 14], "function": [1, 4, 5, 6, 8, 9, 10, 11, 13, 16], "train": 1, "agent": 1, "number": [1, 2, 4, 6, 8, 9, 10, 11, 13, 14], "episod": [1, 9], "next": [1, 2, 4, 5, 8, 10, 11, 12], "appendix": 1, "how": [1, 2, 3, 5, 6, 8, 10, 11, 13, 14, 15], "video": 1, "playback": 1, "your": [1, 5, 6, 8, 9, 11, 13, 14, 16, 17], "jupyt": [1, 4, 6, 9, 14, 17], "notebook": [1, 6, 9, 14, 16, 17], "sentiment": [1, 17], "notabl": [1, 7, 10, 17], "speech": [1, 17], "last": [1, 2, 6, 7, 10, 12, 13, 17], "decad": [1, 2, 17], "1": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14], "imdb": 1, "review": [1, 3, 7, 15], "dataset": [1, 4, 8, 13, 14], "load": [1, 14], "transcript": 1, "2": [1, 2, 4, 5, 7, 8, 10, 11, 13, 14], "3": [1, 2, 4, 5, 7, 8, 10, 11, 13, 14], "build": [1, 3, 7, 13, 14, 17], "model": [1, 2, 7, 8, 11], "introduct": [1, 2, 5, 8], "long": [1, 6, 7, 10, 12], "short": [1, 12], "term": [1, 2, 5, 6, 7, 13], "memori": [1, 6, 7, 8, 13, 14], "overview": 1, "architectur": [1, 13], "propag": [1, 6, 7], "But": [1, 12], "do": [1, 7, 13, 14, 15], "you": [1, 6, 7, 13, 14, 15, 17], "obtain": [1, 5, 7, 13, 14], "lstm": 1, "output": [1, 2, 3, 4, 6, 7, 8, 10, 13, 15], "paramet": [1, 2, 5, 6, 7, 8, 10, 14], "look": [1, 2, 3, 5, 6, 8, 10, 11, 13], "our": [1, 2, 5, 8, 10, 11, 13], "an": [1, 4, 5, 6, 7, 8, 10, 11, 12], "ethic": [1, 6], "perspect": 1, "The": [2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 15, 17], "report": [2, 6, 9], "per": 2, "given": [2, 5, 7, 9, 10, 11, 13], "chip": 2, "log": [2, 7, 9], "scale": [2, 6, 10], "y": [2, 5, 6, 7, 9, 10, 11, 13, 14], "axi": [2, 5, 6, 8, 9, 10, 14], "date": [2, 8], "linear": [2, 5, 6, 7, 9, 11, 16, 17], "blue": [2, 7, 10, 13], "point": [2, 4, 7, 8, 9, 11, 12, 13, 14], "ar": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15], "count": [2, 6, 7, 8, 10], "red": [2, 7, 13], "line": [2, 4, 7, 8, 9, 13], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "ordinari": 2, "least": [2, 9, 14], "squar": [2, 4, 6, 9, 10, 13], "predict": [2, 6, 9], "orang": [2, 8], "In": [2, 3, 4, 6, 7, 9, 11, 13, 14, 15], "1965": 2, "gordon": 2, "would": [2, 5, 6, 8, 9, 10, 11, 12, 13, 15], "doubl": [2, 6, 12], "everi": [2, 5, 7, 9, 13], "two": [2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15], "year": [2, 7], "come": [2, 7, 8, 9, 10, 11, 12, 15], "compar": [2, 3, 4, 5, 6, 13], "against": [2, 6, 7, 9], "actual": [2, 6, 7, 8, 9, 13], "53": [2, 5], "follow": [2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "hi": [2, 7, 9], "best": [2, 7, 8, 9, 13, 15], "fit": [2, 6, 9], "constant": [2, 10], "describ": [2, 7, 8, 12], "semiconductor": 2, "perform": [2, 5, 6, 7, 9, 10, 11, 13], "regress": 2, "between": [2, 3, 4, 5, 6, 7, 9, 11, 13, 14], "npz": [2, 4], "assess": 2, "amaz": 2, "progress": 2, "have": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "made": [2, 3, 9, 10, 14], "five": [2, 6, 7, 11], "These": [2, 3, 6, 7, 9, 11, 13, 15], "packag": [2, 7, 8, 9, 12, 14], "matplotlib": [2, 6, 7, 8, 9, 10, 11, 13, 14], "import": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "command": [2, 4, 7, 8, 13], "pyplot": [2, 6, 7, 8, 9, 10, 11, 13, 14], "plt": [2, 6, 7, 8, 9, 10, 11, 13, 14], "np": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13], "sinc": [2, 5, 6, 7, 8, 9, 10, 13, 14], "thi": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "littl": [2, 10], "background": [2, 6, 7], "math": [2, 7, 9], "natur": [2, 9, 10], "loadtxt": [2, 4, 5], "text": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15], "take": [2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "all": [2, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "element": [2, 5, 8, 10, 13], "exp": [2, 7, 9], "lambda": [2, 9, 10], "minim": [2, 6, 7], "definit": [2, 8, 10], "semilogi": 2, "onto": [2, 14], "figur": [2, 9, 10, 11, 12], "log_": 2, "10": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "ax": [2, 6, 9, 10, 13, 14], "slice": [2, 5, 13], "view": [2, 7, 9], "part": [2, 5, 7, 8, 9, 14, 17], "e": [2, 4, 5, 10, 11], "g": [2, 4, 7, 10, 11, 13], "first": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15], "boolean": [2, 8, 10, 14], "index": [2, 6, 7, 8, 9, 10, 13], "match": [2, 10, 14], "condit": [2, 7, 8, 14], "oper": [2, 6, 8, 9, 10, 11], "block": [2, 4, 9], "combin": [2, 6, 7, 8, 10], "2d": [2, 7, 13, 14], "newaxi": [2, 4], "chang": [2, 3, 6, 8, 9, 10, 14], "1d": [2, 4, 6, 7, 13], "vector": [2, 4, 5, 6, 7, 8, 9, 11, 13], "row": [2, 4, 5, 8, 13], "column": [2, 4, 5, 8, 9, 13], "savez": 2, "savetxt": 2, "save": [2, 3, 6, 7, 8, 9, 10, 14, 16, 17], "format": [2, 3, 4, 5, 7, 9, 12, 14, 15], "respect": [2, 4, 6, 7, 9, 11], "empir": 2, "assum": [2, 5, 10, 11, 12, 14], "transistor_count": 2, "f": [2, 6, 9, 10, 11, 13, 14], "cdot": [2, 5, 10], "b": [2, 7, 9, 11, 13], "where": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13], "find": [2, 5, 6, 7, 8, 14], "specifi": [2, 4, 9], "rate": [2, 6, 7, 9], "ad": [2, 7, 8, 10, 17], "give": [2, 7, 10, 11, 12, 13, 14, 15], "initi": [2, 6, 7, 8, 9], "state": [2, 7, 9, 11], "form": [2, 5, 6, 7, 9, 10, 13, 15], "a_m": 2, "b_m": 2, "start": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14], "2250": 2, "1971": 2, "dfrac": [2, 5, 10], "2a_m": 2, "rightarrow": 2, "frac": [2, 5, 9, 10, 11], "0": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "3466": 2, "675": 2, "4": [2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14], "repres": [2, 8, 9, 10, 11, 13], "python": [2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14], "moores_law": 2, "were": [2, 4, 7, 9, 10], "intel": 2, "4004": 2, "check": [2, 5, 6, 7, 8, 10, 13, 14, 17], "1973": 2, "ml_1971": 2, "ml_1973": 2, "print": [2, 3, 4, 5, 6, 7, 9, 11, 12, 14], "0f": 2, "2f": 2, "more": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "than": [2, 5, 7, 8, 9, 10, 12, 13, 14], "4500": 2, "x2": 2, "00": [2, 4, 5], "now": [2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14], "base": [2, 6, 7, 8, 9, 11], "upon": [2, 9, 10, 11], "each": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17], "transistor_data": 2, "befor": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "its": [2, 6, 7, 8, 9, 10, 13, 14, 15], "good": [2, 6, 8, 9, 12], "idea": [2, 8, 10, 13, 15], "inspect": [2, 6], "structur": [2, 8, 9, 11], "Then": [2, 3, 5, 6, 7, 9, 11, 14], "locat": [2, 8, 9, 10, 11], "interest": [2, 7, 8, 10, 13, 14, 15, 17], "them": [2, 5, 6, 7, 8, 9, 10, 11, 14, 17], "variabl": [2, 4, 6, 7, 8, 9], "here": [2, 3, 4, 6, 8, 9, 10, 12, 13, 15], "out": [2, 5, 6, 7, 9, 10, 12, 13, 14], "processor": 2, "mo": 2, "design": [2, 3, 6, 7, 9, 10], "mosprocess": 2, "area": [2, 10], "bit": [2, 6, 7, 9, 10, 13, 14], "16": [2, 4, 5, 6, 7, 8, 10, 14], "pin": 2, "000": [2, 6, 7, 9, 14], "nm": 2, "12": [2, 3, 5, 6, 7, 8, 13], "mm\u00b2": 2, "head": [2, 4, 5], "8008": 2, "8": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14], "18": [2, 5, 6, 7, 8], "3500": 2, "1972": [2, 7], "14": [2, 5, 6, 7, 8], "nec": 2, "\u03bccom": 2, "42": [2, 5, 7], "2500": 2, "7": [2, 4, 6, 7, 8, 10, 14], "500": [2, 6, 7], "4040": 2, "3000": 2, "1974": 2, "motorola": 2, "6800": 2, "40": 2, "4100": 2, "6": [2, 3, 4, 5, 6, 7, 8, 10, 11, 14], "8080": 2, "6000": 2, "20": [2, 5, 6, 7, 8, 10, 14], "tm": 2, "1000": [2, 6, 9, 14], "28": [2, 5, 6, 8], "8000": 2, "texa": 2, "instrument": 2, "11": [2, 5, 6, 7, 8], "technologi": 2, "6502": 2, "4528": 2, "1975": 2, "21": [2, 5, 7, 8], "intersil": 2, "im6100": 2, "clone": [2, 17], "pdp": 2, "4000": 2, "don": [2, 5, 6, 7, 8, 9, 10, 12, 13, 15], "t": [2, 6, 7, 8, 9, 10, 11, 12, 13, 15], "That": [2, 8], "leav": 2, "second": [2, 7, 8, 13], "third": [2, 10], "extra": [2, 9], "option": [2, 7, 9, 12, 15], "below": [2, 5, 6, 7, 8, 9, 12, 13, 14, 15], "put": [2, 9, 10, 12], "desir": 2, "delimit": [2, 4, 5, 8, 12], "delimet": 2, "default": [2, 4, 6, 7, 9, 13], "behavior": [2, 9, 10], "usecol": [2, 5, 8], "skiprow": [2, 4, 5], "becaus": [2, 3, 6, 7, 9, 11, 12, 13, 14], "header": [2, 4, 8], "entir": [2, 10], "histori": 2, "semiconduct": 2, "name": [2, 3, 4, 6, 8, 9], "four": [2, 8, 9], "digit": [2, 6], "easier": [2, 3, 4, 10], "read": [2, 4, 6, 7, 9, 14], "manag": [2, 9], "assign": [2, 4, 6, 7, 12, 13], "correct": [2, 5, 7, 9], "grab": 2, "tran": 2, "cnt": 2, "5000": 2, "independ": 2, "depend": [2, 6, 7, 9, 13, 15], "transform": [2, 6, 9, 13], "y_i": 2, "equat": [2, 10, 11], "yi": 2, "differ": [2, 3, 5, 6, 7, 8, 9, 10, 13, 14], "min": [2, 9, 13, 14], "sum": [2, 6, 7, 8, 9], "_i": 2, "error": [2, 6, 7, 9, 10, 13], "can": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17], "succinctli": 2, "mathbf": 2, "z": [2, 9, 10, 11], "polynomi": [2, 8, 10], "By": [2, 5], "regressor": 2, "matrix": [2, 6, 7, 9, 11, 13], "statist": [2, 7, 14], "degre": [2, 5, 10], "therefor": [2, 6, 7, 9, 11], "we": [2, 3, 5, 6, 8, 9, 10, 13, 15], "deg": [2, 8, 10], "domain": 2, "case": [2, 5, 8, 9, 10, 11, 12, 13], "coeffici": 2, "unscal": 2, "unshift": 2, "recov": [2, 13], "convert": [2, 3, 7, 9, 11, 13], "method": [2, 5, 6, 7, 8, 9, 11, 13], "mapsto": [2, 10], "666": 2, "32640635": 2, "34163208": 2, "individu": [2, 6, 9, 10, 11, 13, 17], "did": [2, 4, 9, 10, 13], "final": [2, 6, 7, 8, 9, 10, 14], "formula": [2, 5, 9, 13, 14], "xfactor": 2, "2a": 2, "increas": [2, 6, 7, 9, 10], "slope": 2, "semilog": 2, "98": [2, 5], "factor": [2, 6, 7, 9], "three": [2, 3, 4, 8, 10, 11, 12, 13, 14], "get": [2, 5, 6, 7, 8, 9, 10, 12, 13], "same": [2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14], "dimens": [2, 6, 7, 9, 10, 11, 13, 14], "179": 2, "_": 2, "Be": [2, 12, 13], "fivethirtyeight": 2, "style": [2, 4, 7, 8], "sheet": 2, "replic": 2, "http": [2, 6, 7, 8, 9], "com": [2, 6, 9], "transistor_count_predict": 2, "transistor_moores_law": 2, "label": [2, 4, 7, 9, 10, 11, 17], "titl": [2, 6, 8, 9, 10, 14], "microprocessor": 2, "n": [2, 3, 5, 6, 7, 8, 9, 10, 14, 16, 17], "wa": [2, 5, 6, 7, 8, 9, 10, 11], "higher": [2, 4, 6, 7, 9, 10, 12], "xlabel": 2, "introduc": [2, 6, 7, 9], "legend": [2, 6, 8, 9, 11], "loc": [2, 9], "center": [2, 11], "left": [2, 5, 6, 7, 9, 11], "bbox_to_anchor": [2, 9], "5": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "ylabel": 2, "nper": 2, "scatter": [2, 10], "captur": 2, "2015": [2, 6, 7], "claim": 2, "could": [2, 7, 9, 10, 13], "keep": [2, 3, 8, 9, 10, 11, 12, 13], "anymor": 2, "show": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "averag": [2, 9, 14], "x1": 2, "2017": [2, 7, 14], "abov": [2, 5, 6, 7, 9, 10, 11, 12, 13, 17], "plug": [2, 10], "great": [2, 6, 7, 9], "wai": [2, 4, 6, 7, 9, 10, 12, 13, 17], "measur": [2, 5, 6, 7, 9, 11, 12, 14], "rang": [2, 5, 6, 7, 8, 9, 10, 13, 14], "alpha": [2, 5, 10], "transpar": [2, 9], "opaqu": 2, "appear": [2, 7, 10, 12, 17], "lie": 2, "green": [2, 7, 13], "pm": [2, 5], "transistor_count2017": 2, "max": [2, 5, 13, 14], "mean": [2, 3, 7, 8, 9, 10, 11, 13, 14], "linspac": [2, 10], "2016": [2, 7], "your_model2017": 2, "moore_model2017": 2, "ones": [2, 5, 7, 8, 9, 10, 11, 14], "ro": 2, "markers": 2, "mew": 2, "19200000000": 2, "250000000": 2, "7050000000": 2, "0x7f0b617c1c90": 2, "close": [2, 7, 8, 9, 10, 12, 13], "closer": 2, "maximum": [2, 5, 6, 7, 13, 14], "produc": [2, 6, 11, 14, 15], "even": [2, 5, 7, 9, 10, 12, 13, 15], "though": [2, 5, 13], "thought": [2, 9], "slow": [2, 7], "onc": [2, 3, 9, 10, 13], "again": [2, 4, 6, 7, 9, 10, 13, 15], "approach": [2, 7, 9], "2025": 2, "still": [2, 4, 7, 8, 13], "nearli": [2, 10], "much": [2, 3, 4, 5, 6, 7, 9, 10, 13, 15], "better": [2, 4, 6, 8, 9, 10, 11, 13], "extrem": [2, 9, 10], "satisfi": 2, "new": [2, 4, 6, 7, 8, 9, 12, 14, 15], "other": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "session": [2, 3], "origin": [2, 5, 6, 7, 8, 9, 10, 11, 13, 14], "thousand": 2, "back": [2, 5, 6, 7, 9, 10, 13], "dictionari": [2, 4, 6, 7, 9, 13], "user": [2, 9, 12, 13, 15], "add": [2, 6, 7, 9, 10, 11, 13, 15], "one": [2, 4, 5, 7, 9, 10, 11, 12, 13, 14], "understand": [2, 5, 8, 9, 10, 11, 13], "includ": [2, 3, 4, 7, 8, 9, 12, 13, 15], "nyear": 2, "regression_cst": 2, "33": [2, 5, 8], "34": [2, 5], "38": [2, 6], "35": [2, 5, 7, 8], "mooreslaw_regress": 2, "3264063536233": 2, "l": [2, 9, 11], "mooreslaw": 2, "tutori": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "md": [2, 13, 15, 17], "pair": [2, 10, 15], "_static": 2, "text_preprocess": 2, "py": [2, 3, 4, 7, 13], "ma": [2, 8], "nlp": [2, 9], "scratch": [2, 7, 9], "static_equilibrium": 2, "guid": [2, 3, 7, 8], "svd": [2, 13], "who_covid_19_sit_rep_time_seri": [2, 8], "x_y": [2, 4], "benefit": [2, 3, 6], "hundr": [2, 7], "shape": [2, 4, 5, 6, 7, 8, 9, 10, 14], "type": [2, 5, 6, 7, 8, 10, 13, 14], "precis": [2, 6], "float": [2, 4, 5, 7, 9, 13, 14], "prefer": [2, 5, 7, 13], "anoth": [2, 7, 10, 12, 14], "If": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "limit": [2, 6, 7, 9], "like": [2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 15], "prepar": [2, 6, 9, 14], "export": 2, "whose": [2, 9], "contain": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "inform": [2, 6, 7, 8, 9, 10, 12, 13, 15], "singl": [2, 5, 7, 8, 11, 12], "tabular": 2, "inher": [2, 9], "dimension": [2, 4, 6, 7, 9, 11, 14, 16, 17], "organ": [2, 8, 13], "through": [2, 7, 8, 9, 10, 11, 13, 14], "fourth": [2, 8], "append": [2, 4, 6, 7, 9], "togeth": [2, 4, 9, 10, 11], "larger": [2, 6, 10, 11], "arrang": [2, 4], "write": [2, 4, 5, 6, 9, 10, 11, 14, 15], "971000000000000000e": 2, "03": [2, 5], "250000000000000000e": 2, "130514785642591278e": 2, "249999999999916326e": 2, "972000000000000000e": 2, "500000000000000000e": [2, 4], "590908400344571419e": 2, "181980515339620069e": 2, "973000000000000000e": 2, "238793840142739100e": 2, "500000000000097316e": 2, "conclus": [2, 4, 9, 11], "ha": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "maintain": [2, 15], "consist": [2, 10, 11, 13, 15], "time": [2, 3, 5, 6, 7, 8, 9, 10, 11], "01": [2, 4, 5, 7, 9], "2019": [2, 5, 7], "revis": 2, "sai": [2, 10, 11, 13], "should": [2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15], "hold": [2, 11], "until": [2, 7, 9], "enabl": [2, 7], "industri": [2, 14], "comput": [2, 5, 6, 7, 8, 9, 10, 11, 13, 14], "power": [2, 3, 6, 7, 9, 10, 15], "small": [2, 8, 9, 10, 13, 14], "insight": [2, 10], "incred": 2, "been": [2, 7, 8, 9, 13, 14], "over": [2, 5, 6, 7, 8, 9, 10, 14], "half": 2, "centuri": 2, "wikipedia": [2, 10], "articl": [2, 6, 7, 9], "access": [2, 4, 8, 10, 13, 15], "oct": 2, "2020": [2, 5, 7, 8], "04": [2, 5, 10], "19": [2, 5, 6, 7], "cram": 2, "compon": [2, 9, 11, 13, 14], "integr": 2, "circuit": 2, "electron": [2, 7], "magazin": 2, "retriev": [2, 9, 14], "april": 2, "courtland": 2, "rachel": [2, 6, 9], "man": 2, "ieee": 2, "spectrum": 2, "30": [2, 5, 14], "mar": 2, "sync": [3, 15], "json": 3, "markdown": [3, 12, 15], "drawback": 3, "numpi": [3, 5, 7, 8, 9, 10, 13, 14, 15], "store": [3, 5, 6, 7, 9], "disk": [3, 7], "veri": [3, 6, 7, 8, 9, 10, 13, 14, 15], "allow": [3, 9, 10, 15], "almost": 3, "ani": [3, 4, 5, 7, 8, 9, 11, 12], "input": [3, 5, 6, 7, 9, 10, 12, 13], "librari": [3, 4, 5, 6, 7, 11, 13], "hard": [3, 10], "see": [3, 4, 5, 6, 9, 10, 11, 13, 15, 17], "when": [3, 4, 6, 7, 9, 10, 11, 13, 14], "pull": [3, 15], "request": [3, 6, 15], "onli": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "raw": [3, 14], "lightweight": 3, "markup": 3, "languag": [3, 7, 9, 15], "Its": 3, "kei": [3, 4, 5, 6, 9], "goal": [3, 6, 7, 10, 11, 17], "readabl": [3, 8], "code": [3, 6, 7, 8, 9, 10, 13, 17], "open": [3, 4, 6, 7, 9, 12, 15, 17], "must": [3, 11, 13], "common": [3, 7, 9, 13, 15], "mark": [3, 9], "cell": [3, 6, 7, 9, 12, 13, 14, 15], "render": [3, 7, 15], "support": [3, 5, 6, 7, 9, 13], "varieti": 3, "restructur": [3, 17], "direct": [3, 7, 9, 11, 12], "sphinx": 3, "built": [3, 6, 7, 9, 10, 13, 16], "websit": [3, 6, 9, 12, 15], "local": [3, 6, 7, 9, 14, 17], "binder": [3, 7, 15, 17], "version": [3, 5, 8, 10, 13, 17], "simpl": [3, 5, 6, 7, 8, 9, 10, 11, 14], "exampl": [3, 6, 7, 8, 9, 10, 13, 14], "thing": [3, 4, 9, 10, 12], "explain": [3, 7, 10, 12], "calcul": [3, 7, 8, 9, 10, 11, 14], "side": 3, "cell_typ": 3, "metadata": 3, "sourc": [3, 7, 9, 11, 15, 17], "execution_count": 3, "stdout": 3, "output_typ": 3, "stream": [3, 6], "kernelspec": 3, "display_nam": 3, "python3": 3, "language_info": 3, "codemirror_mod": 3, "ipython": [3, 4, 7, 12, 13], "file_extens": 3, "mimetyp": 3, "nbconvert_export": 3, "pygments_lex": 3, "ipython3": 3, "nbformat": 3, "nbformat_minor": 3, "text_represent": 3, "extens": [3, 9], "format_nam": 3, "format_vers": 3, "jupytext_vers": 3, "shorter": [3, 7], "doe": [3, 5, 6, 8, 9, 10, 11, 13], "submit": 3, "also": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17], "To": [3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 17], "instal": [3, 5, 7, 13], "pip": [3, 7], "conda": [3, 6, 7, 9, 14], "c": [3, 9, 10, 11, 13], "forg": 3, "lab": 3, "browser": 3, "launch": [3, 15, 17], "ask": [3, 9], "rebuild": [3, 13], "either": [3, 8, 9, 17], "With": [3, 5, 6, 7, 10], "interfac": [3, 7], "automat": [3, 6, 7, 8, 9], "right": [3, 6, 7, 8, 9, 10, 11, 12, 13, 17], "click": [3, 17], "choos": [3, 5, 6, 7, 8, 9, 10, 13], "saw": [3, 10], "both": [3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 17], "editor": [3, 4], "vim": 3, "emac": 3, "continu": 3, "handl": [3, 6, 8, 9], "zip": [4, 6, 9, 10, 14], "comma": [4, 12], "workspac": 4, "compress": [4, 13], "serv": [4, 14], "most": [4, 5, 6, 7, 8, 9, 12, 13], "storag": 4, "binari": [4, 9, 10], "finish": [4, 6, 7, 9], "skill": [4, 12], "directori": [4, 7, 9, 15], "necessari": [4, 5, 7, 9, 10], "magic": 4, "arang": [4, 6, 8], "del": 4, "who": [4, 6, 7, 9, 12, 13, 15], "coupl": [4, 10], "let": [4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "integ": [4, 6, 7, 8, 10, 13, 14], "9": [4, 5, 6, 7, 8, 9, 10, 14], "25": [4, 5, 8, 9], "36": 4, "49": [4, 5], "64": [4, 5, 9], "81": [4, 5], "x_axi": [4, 9], "y_axi": 4, "current": [4, 7, 8, 9, 10], "clear": [4, 8, 12, 15], "valu": [4, 6, 7, 8, 9, 10, 13, 14], "npy": [4, 9], "nativ": [4, 12], "cannot": [4, 8, 9], "standard": [4, 5, 6, 7, 8, 9, 12, 14], "spreadsheet": 4, "workspaec": 4, "info": [4, 7, 8], "modul": [4, 5, 6, 7, 8, 9, 12, 13, 14], "ho": 4, "kage": 4, "__init__": 4, "load_xi": 4, "ve": [4, 9, 14], "delet": [4, 8], "nice": 4, "scenario": [4, 9], "peopl": [4, 9, 13, 15], "program": [4, 9, 10], "mai": [4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "separ": [4, 7, 8, 13], "result": [4, 5, 6, 9, 10, 11, 13], "compos": [4, 10], "ascii": [4, 7], "charact": [4, 8, 9], "filetyp": 4, "complex": [4, 7, 9, 10], "multipl": [4, 5, 6, 7, 9, 10, 13], "forc": [4, 7, 9, 11], "array_out": 4, "tell": [4, 5, 7, 12], "place": [4, 6, 9, 10, 12], "000000000000000000e": 4, "600000000000000000e": 4, "900000000000000000e": 4, "400000000000000000e": 4, "100000000000000000e": 4, "There": [4, 5, 7, 8, 9, 11], "featur": [4, 6, 9, 10, 13, 14, 17], "shoud": 4, "notic": [4, 7, 13, 15], "ignor": [4, 9], "re": [4, 7, 8, 9, 12, 14, 17], "skip": [4, 8, 9, 13], "number_of_header_lin": 4, "written": [4, 7, 10], "scientif": [4, 15], "notat": [4, 6, 10], "fmt": 4, "gener": [4, 5, 6, 7, 8, 9, 11, 12, 13], "preserv": [4, 8, 9], "int": [4, 6, 9], "y_squar": 4, "dtype": [4, 5, 6, 8, 10, 13, 14], "float64": [4, 6, 13, 14], "collabor": 4, "pickl": [4, 6], "futur": 4, "miss": [4, 5, 7], "genfromtext": 4, "about": [4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15], "io": [4, 7, 8, 9], "concept": [5, 6, 7, 9, 11], "interpret": [5, 14], "scipi": [5, 13, 14], "environ": [5, 6, 7, 9, 14, 15], "basic": [5, 6, 8, 9, 10, 13, 14], "popul": [5, 9], "deviat": [5, 7, 14], "etc": [5, 10], "promin": 5, "face": [5, 13], "immedi": 5, "effect": 5, "daili": [5, 9], "live": [5, 9, 10, 17], "covid": 5, "pandem": 5, "world": [5, 6, 7, 9, 13], "offer": [5, 7, 12], "rare": 5, "opportun": 5, "studi": 5, "human": [5, 7, 9], "activ": [5, 6, 7, 9], "lack": [5, 9], "thereof": 5, "worst": 5, "affect": [5, 6, 9, 14], "citi": 5, "dure": [5, 6, 7, 9, 12], "march": 5, "june": 5, "For": [5, 6, 7, 8, 9, 10, 13, 14, 15], "hour": [5, 7], "It": [5, 6, 7, 8, 9, 10, 11, 13, 14], "u": [5, 10, 11, 13, 14], "improv": [5, 7, 9], "due": [5, 7, 9, 11, 13], "intuit": [5, 10], "random": [5, 6, 7, 9], "default_rng": [5, 6, 7, 9], "stat": 5, "condens": 5, "hourli": 5, "level": [5, 6, 7, 9, 10, 12, 13], "variou": [5, 6, 7, 9, 10, 14], "station": 5, "across": [5, 9, 13], "avail": [5, 7, 8, 15], "31": [5, 8], "requir": [5, 7, 10, 11, 12], "few": [5, 6, 7, 8, 9], "particul": 5, "matter": 5, "nitrogen": 5, "dioxid": 5, "no2": 5, "ammonia": 5, "nh3": 5, "sulfur": 5, "so2": 5, "carbon": 5, "monoxid": 5, "co": [5, 9, 10], "ozon": 5, "o3": 5, "oxid": 5, "nox": 5, "nitric": 5, "NO": 5, "benzen": 5, "toluen": 5, "xylen": 5, "glimps": 5, "csv": [5, 8, 9], "datetim": 5, "pm2": 5, "pm10": 5, "05": [5, 14], "103": 5, "26": [5, 8], "305": 5, "46": 5, "94": [5, 13], "71": 5, "43": 5, "06": 5, "178": 5, "152": 5, "73": [5, 13], "13": [5, 6, 7, 8], "65": 5, "83": 5, "47": 5, "54": 5, "104": 5, "309": [5, 8], "74": 5, "66": 5, "08": 5, "27": [5, 6, 8], "02": 5, "69": 5, "106": [5, 11], "79": 5, "76": 5, "91": 5, "90": [5, 14], "314": 5, "48": [5, 6], "32": [5, 14], "45": 5, "59": [5, 6], "78": 5, "356": 5, "44": [5, 17], "22": [5, 6, 8], "41": [5, 10], "80": [5, 7], "372": 5, "23": [5, 8], "68": [5, 6], "92": 5, "15": [5, 6, 7, 8, 10, 13, 14], "39": 5, "62": [5, 6], "389": 5, "97": [5, 6, 13], "17": [5, 6, 7, 8], "56": [5, 10], "371": 5, "61": 5, "87": [5, 13], "84": 5, "29": [5, 8], "24": [5, 8], "37": 5, "07": 5, "77": 5, "361": 5, "88": 5, "63": 5, "86": 5, "96": 5, "377": 5, "purpos": [5, 6, 7, 11], "concern": [5, 9], "viz": 5, "particular": [5, 8, 9, 10, 13, 14], "pollutants_a": 5, "pollutants_b": 5, "slightli": [5, 10, 11, 13], "later": [5, 6, 8, 9], "pollutant_data": 5, "9528": 5, "might": [5, 8, 13, 15], "denot": [5, 10, 11], "nan": [5, 8], "quick": [5, 7, 10], "isfinit": 5, "true": [5, 6, 7, 8, 9, 13, 14], "successfulli": 5, "complet": [5, 6, 7, 10, 12, 13], "adopt": [5, 9], "central": 5, "control": [5, 6, 7, 9], "board": 5, "summar": [5, 6, 8, 9], "concentr": 5, "ip": 5, "ihi": 5, "ilo": 5, "bphi": 5, "bplo": 5, "cp": 5, "breakpoint": 5, "greater": [5, 9, 14], "equal": 5, "less": [5, 10, 11, 13, 14], "correspond": [5, 6, 8, 9, 10, 11, 13, 14], "help": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "shown": [5, 6, 9, 12], "chart": 5, "arrai": [5, 6, 7, 9, 10, 11, 12, 16, 17], "51": 5, "101": 5, "201": 5, "301": 5, "401": 5, "501": 5, "121": [5, 13], "251": 5, "351": 5, "431": 5, "181": 5, "281": 5, "801": [5, 6], "1201": 5, "1801": 5, "381": 5, "1601": 5, "169": 5, "209": 5, "749": 5, "window": 5, "moving_mean": 5, "cumsum": 5, "achiev": 5, "sure": [5, 7, 8, 9, 12, 13, 15], "length": [5, 9, 11], "truncat": 5, "pollutants_b_8hr_avg": 5, "accord": [5, 7, 13], "pollutants_a_24hr_avg": 5, "ensur": [5, 6, 8, 9], "period": [5, 8], "def": [5, 6, 7, 9, 10], "ret": 5, "join": [5, 6, 8, 9, 14], "concaten": [5, 9], "wise": [5, 9], "subindic": 5, "relationship": [5, 6, 7], "compute_indic": 5, "fetch": [5, 9], "upper": [5, 9, 17], "lower": [5, 6, 9], "bound": [5, 10], "categori": [5, 9], "feed": [5, 6, 7], "pol": 5, "con": 5, "bp": 5, "inc": 5, "els": [5, 7, 11], "bl": 5, "bh": 5, "ih": 5, "il": 5, "elif": 5, "util": [5, 6, 7, 9, 11, 13], "simpli": [5, 14], "loop": [5, 6, 7, 9, 10, 13], "ourselv": [5, 8, 9, 10], "advantag": [5, 7, 10], "vcompute_indic": 5, "call": [5, 6, 7, 8, 9, 10, 12, 14], "stack": [5, 9, 13, 14], "sub_indic": 5, "which": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "aqi_arrai": 5, "31st": 5, "descript": 5, "decis": [5, 9, 10], "signific": [5, 7, 10], "after": [5, 6, 7, 8, 9, 10, 13, 14], "impos": 5, "tail": 5, "critic": [5, 7, 9], "datetime64": 5, "subset": [5, 6, 8, 10], "m8": 5, "h": [5, 7, 10, 13], "total": [5, 6, 7, 8, 9, 10], "commenc": [5, 9], "24th": [5, 8], "after_lock": 5, "24t00": 5, "before_lock": 5, "21t00": 5, "2376": 5, "approxim": [5, 7, 8, 10], "normal": [5, 6, 7, 9, 10, 11, 13, 14], "distribut": [5, 6, 7, 14], "size": [5, 6, 7, 9, 10, 13], "before_sampl": 5, "after_sampl": 5, "drawn": [5, 6, 9], "choic": [5, 6, 7, 9, 10, 12, 15], "rng": [5, 6, 7, 9], "replac": [5, 6, 8, 9, 12], "fals": [5, 6, 7, 8, 9, 14], "null": [5, 7], "altern": [5, 12, 13], "mathemat": [5, 9, 10], "h_": [5, 9], "mu_": 5, "evalu": [5, 6, 9], "sqrt": [5, 7, 9], "sigma": [5, 13, 14], "varianc": [5, 7], "t_test": 5, "diff": 5, "var": 5, "ddof": 5, "num": 5, "denom": 5, "len": [5, 6, 7, 8, 9], "divid": [5, 6, 10, 13], "t_valu": 5, "cdf": 5, "argument": [5, 8], "freedom": 5, "dof": 5, "p_valu": 5, "84285569186369": 5, "2266697972219608e": 5, "699": 5, "confid": 5, "95": [5, 13], "clearli": 5, "safe": 5, "reject": 5, "usual": [5, 6, 7, 12, 14, 15], "chosen": [5, 6, 9, 12], "accept": [5, 9, 15], "enough": [5, 10, 12], "evid": 5, "word": [5, 7, 9, 12], "fail": 5, "panda": [5, 9], "seri": 5, "provid": [5, 6, 7, 8, 9, 12, 14, 17], "ttest_rel": 5, "life": [5, 9, 15], "non": [5, 6, 7, 9, 13], "wilcoxon": 5, "host": [5, 14, 15], "characterist": [5, 9], "gentl": 5, "demonstr": [6, 7, 9, 11, 12], "feedforward": [6, 7], "hidden": [6, 7, 9], "layer": [6, 7, 9], "recogn": 6, "handwritten": 6, "artifici": [6, 7, 9], "resembl": 6, "multi": [6, 9, 14], "perceptron": [6, 9], "classifi": [6, 9], "60": [6, 10], "784": 6, "28x28": 6, "supervis": [6, 7, 9], "revers": [6, 7, 9], "mode": [6, 7], "differenti": [6, 7, 9], "score": 6, "adapt": [6, 7, 13], "andrew": [6, 7, 9], "trask": 6, "author": [6, 9], "permiss": 6, "reader": [6, 7, 9, 12, 14], "some": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "knowledg": [6, 7, 10, 14], "manipul": [6, 7, 9, 11, 13, 14], "algebra": [6, 7, 9, 11, 16, 17], "addit": [6, 7, 9, 12, 14], "familiar": [6, 7, 8, 9, 10, 12], "main": [6, 7, 12, 15, 17], "refresh": [6, 8, 9, 13, 14], "advis": 6, "paper": [6, 7, 14], "publish": [6, 7, 14], "yann": [6, 7], "lecun": [6, 7], "yoshua": [6, 7], "bengio": [6, 7], "geoffrei": [6, 7], "hinton": [6, 7], "regard": [6, 7], "pioneer": [6, 7], "field": [6, 7], "grokk": 6, "teach": [6, 12, 17], "urllib": 6, "url": [6, 9], "gzip": 6, "file": [6, 7, 8, 9, 12, 14, 15, 17], "decompress": 6, "well": [6, 7, 9, 11, 12, 14], "visual": [6, 7, 9, 10, 11, 14], "run": [6, 7, 8, 9, 12, 13, 14], "isol": [6, 7, 9, 11, 14], "virtualenv": [6, 7, 9, 14], "jupyterlab": [6, 7, 9, 14], "forget": [6, 9], "section": [6, 7, 9, 10, 12, 17], "download": [6, 8, 9, 14, 17], "split": [6, 9], "list": [6, 7, 9, 10, 12], "data_sourc": 6, "training_imag": 6, "idx3": 6, "ubyt": 6, "gz": 6, "test_imag": 6, "t10k": 6, "training_label": 6, "idx1": 6, "test_label": 6, "o": [6, 8, 9, 12, 14], "data_dir": 6, "_data": 6, "makedir": 6, "exist_ok": 6, "base_url": [6, 9], "github": [6, 7, 9, 15], "rossbar": 6, "mirror": 6, "blob": 6, "fname": 6, "fpath": 6, "path": [6, 8, 9, 14], "exist": [6, 11, 13, 15, 17], "resp": 6, "request_opt": 6, "raise_for_statu": 6, "succes": 6, "wb": 6, "fh": [6, 9], "chunk": 6, "iter_cont": 6, "chunk_siz": 6, "128": 6, "ndarrai": [6, 8, 13, 14], "need": [6, 7, 9, 13, 14], "reshap": [6, 7, 9], "multipli": [6, 7, 11, 13], "mnist_dataset": 6, "rb": [6, 9], "mnist_fil": 6, "frombuff": 6, "uint8": [6, 7, 13, 14], "offset": 6, "x_train": [6, 9], "x_test": [6, 9], "y_train": [6, 9], "y_test": [6, 9], "confirm": 6, "60000": 6, "10000": [6, 8], "And": [6, 7], "000th": 6, "999": [6, 9], "valid": [6, 8, 9, 13], "displai": [6, 7, 13, 14], "mnist_imag": 6, "59999": 6, "color": [6, 7, 8, 10, 11, 14], "map": [6, 7, 9, 10, 14], "grayscal": [6, 7, 13, 14], "black": 6, "imshow": [6, 7, 10, 13, 14], "cmap": [6, 7, 10, 13, 14], "grai": [6, 7, 13, 14], "num_exampl": 6, "seed": [6, 7], "147197952744": 6, "fig": [6, 9, 10, 11, 14], "subplot": [6, 10, 14], "sampl": [6, 7, 9, 14], "taken": [6, 9], "hand": [6, 10, 12], "arab": 6, "numer": [6, 7, 8, 9], "exact": 6, "randomli": [6, 7, 9], "quit": [6, 7, 10], "198": 6, "243": 6, "254": 6, "212": 6, "tensor": [6, 7], "multidimension": [6, 7], "convers": 6, "alreadi": [6, 9, 10], "challeng": [6, 7, 14], "procedur": [6, 10], "speed": [6, 7], "One": [6, 7, 8, 10], "practic": [6, 7, 9, 13], "nvidia": 6, "googl": [6, 7], "cloud": [6, 7, 10], "blog": [6, 7, 9, 17], "post": [6, 7, 9, 17], "255": [6, 13, 14], "interv": 6, "thu": [6, 12], "promot": 6, "train_label": 6, "reduc": [6, 7, 10], "training_sampl": 6, "test_sampl": 6, "success": [6, 7, 9], "01176471": 6, "07058824": 6, "49411765": 6, "53333333": 6, "68627451": 6, "10196078": 6, "65098039": 6, "96862745": 6, "49803922": 6, "emb": 6, "zero": [6, 7, 9, 10, 11, 12, 13], "As": [6, 8, 10, 11, 12, 13, 14], "posit": [6, 7, 9, 10], "similar": [6, 7, 9, 10, 11, 14], "one_hot_encod": 6, "one_hot_label": 6, "none": [6, 7, 9], "astyp": [6, 7, 14], "examin": [6, 8], "yourself": [6, 9, 12], "high": [6, 7, 9, 14, 17], "refer": [6, 7, 9, 12, 13, 14], "research": [6, 7, 9, 10, 14], "public": [6, 9, 14], "afterward": [6, 9], "construct": [6, 9], "identifi": [6, 8, 9, 14], "certain": [6, 7, 9, 10, 11, 14], "accuraci": [6, 9], "filter": [6, 8], "represent": [6, 9], "target": [6, 9], "gradient": [6, 7, 9], "deriv": [6, 9, 10], "loss": [6, 7, 9], "backward": [6, 7, 9], "middl": 6, "weight": [6, 7, 9], "dot": [6, 7, 9, 13], "simplic": [6, 7, 9, 14], "bia": [6, 9], "omit": 6, "adjust": [6, 7, 10], "fine": [6, 7, 8, 9, 12], "tune": [6, 7, 9], "optim": [6, 7, 9, 11], "descent": [6, 7, 9], "highest": 6, "lowest": 6, "capabl": [6, 9], "appli": [6, 7, 8, 9, 10, 11], "rectifi": [6, 7], "unit": [6, 7, 9, 11], "relu": [6, 7], "regular": [6, 8, 9, 17], "techniqu": [6, 7, 9, 14], "prevent": [6, 7, 9], "overfit": [6, 9], "dropout": 6, "dilut": 6, "truth": [6, 9], "final_layer_output": 6, "image_label": 6, "metric": 6, "abil": [6, 9], "hasn": 6, "seen": [6, 9, 11], "previous": [6, 7, 10], "layer_0": 6, "layer_1": 6, "previou": [6, 7, 9, 13], "weights_1": 6, "layer_2": 6, "ingest": 6, "repeat": [6, 7, 13], "weights_2": 6, "end": [6, 7, 9, 11, 12, 14], "signal": [6, 7], "technic": 6, "matric": [6, 11, 13, 14], "chain": [6, 9], "rule": [6, 7, 9, 13], "iter": [6, 9, 10, 12], "epoch": [6, 9], "cycl": [6, 9, 10], "reflect": [6, 9, 12], "maxim": [6, 7], "cover": [6, 7, 8, 15], "ll": [6, 7, 9, 13, 14, 15], "884736743": 6, "otherwis": [6, 7, 10, 11, 13, 14, 15], "relu2deriv": 6, "hyperparamet": [6, 9], "learning_r": [6, 7, 9], "magnitud": [6, 7, 11], "overcorrect": [6, 7], "neg": [6, 7, 8, 9, 13], "longer": [6, 7, 9], "computation": 6, "intens": [6, 13, 14], "task": [6, 7], "low": [6, 14], "meaning": 6, "hidden_s": 6, "pixels_per_imag": 6, "establish": [6, 9], "num_label": 6, "indic": [6, 7, 8, 9, 13], "occur": [6, 9], "005": 6, "100": [6, 7, 9, 10, 12, 14], "experi": [6, 7, 9, 10, 11, 13], "track": [6, 8, 10], "accur": [6, 9], "store_training_loss": 6, "store_training_accurate_pr": 6, "store_test_loss": 6, "store_test_accurate_pr": 6, "j": [6, 10, 13], "training_loss": [6, 9], "training_accurate_predict": 6, "accordingli": 6, "dropout_mask": 6, "increment": 6, "argmax": 6, "layer_2_delta": 6, "layer_1_delta": 6, "outer": [6, 7], "unlik": [6, 7, 9, 12], "modifi": [6, 8, 9], "batch": [6, 7, 9, 14], "manner": 6, "elimin": [6, 8, 13], "test_loss": 6, "test_accurate_predict": 6, "3f": 6, "898": 6, "397": 6, "680": 6, "582": 6, "656": 6, "633": 6, "607": 6, "641": 6, "592": 6, "569": 6, "679": 6, "556": [6, 8], "541": 6, "708": 6, "534": [6, 8], "732": 6, "526": 6, "729": 6, "515": 6, "715": 6, "739": 6, "495": 6, "748": 6, "487": 6, "753": 6, "483": 6, "769": 6, "486": 6, "747": 6, "473": 6, "776": 6, "752": 6, "460": 6, "788": 6, "462": 6, "762": 6, "465": 6, "767": 6, "443": 6, "456": 6, "775": 6, "448": 6, "795": 6, "455": 6, "772": 6, "438": 6, "787": 6, "453": 6, "778": 6, "446": [6, 8], "791": 6, "450": 6, "779": 6, "441": 6, "452": 6, "437": 6, "786": 6, "436": 6, "794": 6, "449": 6, "433": 6, "774": 6, "429": 6, "785": 6, "mani": [6, 7, 8, 9, 10, 12, 13, 14], "minut": [6, 9], "machin": [6, 7, 9, 12, 14], "wait": [6, 15], "reset": [6, 7], "runtim": 6, "instanc": [6, 7, 9], "epoch_rang": 6, "training_metr": 6, "asarrai": 6, "test_metr": 6, "nrow": [6, 14], "ncol": [6, 14], "figsiz": [6, 10, 14], "item": [6, 7, 9], "capit": [6, 12], "set_titl": [6, 10, 14], "set_xlabel": [6, 9, 10], "decreas": 6, "reach": [6, 7], "somewhat": 6, "plausibl": 6, "cross": [6, 7, 11, 12], "entropi": [6, 7], "possibl": [6, 7, 8, 13, 15], "solut": [6, 7, 8, 9], "discuss": [6, 7, 9], "just": [6, 8, 9, 10, 11, 12, 13, 14], "further": [6, 7, 9], "enhanc": [6, 7, 9], "mixtur": [6, 9], "mini": 6, "alter": [6, 9], "deeper": [6, 9], "softmax": [6, 7], "convolut": [6, 7, 14], "earli": [6, 9], "stop": [6, 7, 9, 10], "unbias": [6, 9], "valuat": 6, "faster": [6, 9, 10], "stabl": [6, 9, 11], "howev": [6, 7, 8, 9, 11, 13], "applic": [6, 7, 8, 9, 13, 15, 17], "special": [6, 7, 9, 13], "framework": [6, 7, 9, 12], "pytorch": [6, 7, 9], "jax": [6, 7, 9], "tensorflow": [6, 7, 9], "mxnet": [6, 7, 9], "api": [6, 7, 9, 10], "gpu": [6, 7, 9], "develop": [6, 7, 9, 12, 17], "think": [6, 8], "potenti": 6, "issu": [6, 7, 8, 9, 17], "avoid": [6, 8], "mitig": [6, 9], "those": [6, 8, 9, 11, 13, 14], "document": [6, 7, 8, 12, 13, 15, 17], "card": 6, "margaret": 6, "mitchel": 6, "et": [6, 7], "al": [6, 7], "datasheet": 6, "timnit": 6, "gebru": 6, "talk": [6, 9], "pratyusha": [6, 9], "kalluri": [6, 9], "resourc": [6, 9], "thoma": [6, 9], "radic": [6, 9], "ai": [6, 7, 9], "podcast": [6, 9], "credit": [6, 12], "hsjeong5": 6, "without": [6, 8, 9, 10, 11, 13], "extern": 6, "test": [7, 9, 13], "licens": [7, 12, 15], "underli": [7, 9], "gym": 7, "atari": 7, "footprint": 7, "implement": [7, 8, 9, 14], "plai": [7, 9, 10], "game": 7, "screen": [7, 14], "go": [7, 8, 9, 10, 12, 13, 15], "player": 7, "racket": 7, "tenni": 7, "move": [7, 9, 11, 13], "down": [7, 8, 9, 12], "tri": 7, "hit": 7, "ball": 7, "oppon": 7, "touch": 7, "goe": [7, 13], "past": [7, 9], "shot": 7, "win": [7, 12], "andrej": 7, "karpathi": 7, "bootcamp": 7, "uc": 7, "berkelei": 7, "mechan": [7, 9, 11], "theori": [7, 10, 13], "openai": 7, "while": [7, 9, 10, 12, 13], "simul": 7, "try": [7, 8, 9, 10, 13, 15], "literatur": 7, "link": [7, 10, 12], "conveni": [7, 9, 10, 14], "free": [7, 12], "colaboratori": 7, "tpu": 7, "acceler": [7, 11], "trial": 7, "interact": [7, 8, 9, 11, 15], "gain": [7, 10], "action": 7, "receiv": 7, "proce": [7, 13], "happen": [7, 9, 10, 13], "deem": 7, "present": [7, 9, 12, 14, 15], "what": [7, 9, 13, 15], "overal": 7, "detail": [7, 9, 10, 12, 13, 14, 15], "introductori": 7, "book": [7, 9], "richard": 7, "sutton": 7, "barton": 7, "concis": 7, "remain": [7, 10, 11], "finit": 7, "horizon": 7, "explor": [7, 10], "exploit": 7, "feedback": 7, "partial": 7, "instead": [7, 8, 9, 11, 13, 14, 15], "cumul": [7, 8], "known": [7, 10, 14], "estim": [7, 8, 14], "visit": [7, 9, 10], "probabl": [7, 9], "versu": 7, "often": [7, 9, 10], "99": 7, "sequenc": [7, 9], "sometim": [7, 8, 10], "trajectori": 7, "yield": [7, 10], "algorithm": [7, 9, 14], "belong": [7, 9, 14], "famili": [7, 9], "typic": [7, 12], "wide": 7, "ascent": 7, "object": [7, 11, 14], "monitor": 7, "wrapper": 7, "instanti": [7, 9], "env": 7, "v0": 7, "action_spac": 7, "get_action_mean": 7, "leftfir": 7, "rightfir": 7, "noop": 7, "fire": 7, "mp4": 7, "wrap": [7, 10], "around": [7, 8, 9, 10, 14], "kind": [7, 8, 9, 12, 13, 15], "rather": [7, 10, 12], "digest": 7, "fed": 7, "deepmind": 7, "dqn": 7, "210x160": 7, "encod": [7, 8], "box": [7, 14], "observation_spac": 7, "discret": 7, "fix": [7, 15], "class": [7, 9, 10, 17], "ed": 7, "core": 7, "random_fram": 7, "rgb_arrai": 7, "400": [7, 10], "80x80x1": 7, "ravel": [7, 10], "flatten": 7, "helper": [7, 9], "frame_preprocess": 7, "observation_fram": 7, "crop": 7, "195": [7, 11, 14], "downsampl": 7, "remov": [7, 8, 9, 13, 14], "144": [7, 13], "eras": 7, "109": 7, "earlier": [7, 9], "80x80": 7, "preprocessed_random_fram": 7, "product": [7, 11, 12], "send": 7, "12288743": 7, "d": [7, 9, 11, 15], "neuron": 7, "200": [7, 14], "empti": [7, 11], "xavier": [7, 9], "standard_norm": [7, 9], "w1": 7, "w2": [7, 9], "outlin": [7, 15], "policy_forward": 7, "sigmoid": [7, 9], "logit": 7, "p": [7, 10], "exponenti": [7, 9], "policy_backward": 7, "eph": 7, "epdlogp": 7, "dw2": [7, 9], "dh": 7, "dw1": 7, "epx": 7, "intermedi": [7, 9], "sever": [7, 9], "dlogp": 7, "dr": 7, "manual": 7, "full": [7, 13], "vstack": [7, 9], "stage": [7, 9], "toward": [7, 9, 14], "rmsprop": 7, "decai": [7, 9], "decay_r": 7, "zeros_lik": 7, "buffer": 7, "grad_buff": 7, "k": [7, 9, 13], "v": [7, 8, 9, 11, 13], "rmsprop_cach": 7, "discount_reward": 7, "gamma": 7, "r": [7, 8, 9, 10, 11, 13], "discounted_r": 7, "running_add": 7, "pseudocod": 7, "predefin": [7, 9], "sign": 7, "lead": [7, 10], "appropri": [7, 8, 10, 13, 15], "setup": [7, 13], "demo": 7, "hardwar": [7, 13], "cpu": 7, "beyond": [7, 10], "comparison": 7, "took": [7, 9, 10], "max_episod": 7, "dictat": 7, "At": [7, 12], "batch_siz": 7, "1e": [7, 9], "debug": 7, "prev_x": 7, "running_reward": 7, "reward_sum": 7, "episode_numb": 7, "motion": 7, "update_input": 7, "cur_x": 7, "tag": [7, 9], "output_scrol": 7, "cours": [7, 10, 12, 13], "aprob": 7, "uniform": [7, 9], "cach": [7, 9], "recal": [7, 13], "done": [7, 9, 10, 11, 12, 13], "epr": 7, "discounted_epr": 7, "std": 7, "grad": [7, 9], "henc": [7, 9], "throw": 7, "traini": 7, "shut": 7, "uncom": 7, "doesn": [7, 8, 9, 12], "span": 7, "reason": [7, 10, 13, 15], "simplifi": [7, 11], "everyth": 7, "autodiff": 7, "autograd": 7, "lot": [7, 10], "problem": [7, 8, 9, 11], "ineffici": 7, "account": [7, 8, 9, 14], "larg": [7, 9, 10], "amount": [7, 10, 14], "million": 7, "node": [7, 9], "being": [7, 9, 11, 12, 17], "assist": 7, "alwai": [7, 9, 13], "advanc": [7, 10], "sensit": [7, 9], "resolv": 7, "self": [7, 9, 17], "proxim": 7, "ppo": 7, "john": [7, 13], "schulman": 7, "month": 7, "dota": 7, "competit": [7, 14], "Of": [7, 10, 13], "smaller": [7, 10, 11], "fast": [7, 8], "matthew": 7, "botvinick": 7, "sam": 7, "ritter": 7, "jane": 7, "wang": 7, "zeb": 7, "kurth": 7, "nelson": 7, "charl": 7, "blundel": 7, "demi": 7, "hassabi": 7, "educ": [7, 9, 17], "materi": [7, 14, 15, 17], "spin": 7, "lectur": [7, 13, 14], "taught": 7, "practition": 7, "david": 7, "silver": 7, "ucl": 7, "recognit": 7, "translat": 7, "classif": [7, 9], "explicit": 7, "wrong": [7, 8], "reli": 7, "had": [7, 9, 13], "major": 7, "2013": 7, "alexnet": 7, "breakthrough": 7, "vision": [7, 9, 14], "volodymyr": 7, "mnih": 7, "colleagu": 7, "abl": [7, 8, 10, 12, 13], "classic": 7, "arcad": 7, "Their": 7, "q": 7, "replai": 7, "off": [7, 14], "alphago": 7, "mont": 7, "carlo": 7, "tree": [7, 17], "search": [7, 14], "2000": [7, 9], "influenc": [7, 9, 10], "ronald": 7, "william": 7, "1992": 7, "1986": 7, "1990": 7, "gerald": 7, "tesauro": 7, "tempor": 7, "td": 7, "gammon": 7, "1995": 7, "ibm": 7, "backgammon": 7, "ji": 7, "lin": 7, "robot": 7, "1993": 7, "solv": 7, "alphazero": 7, "master": 7, "chess": 7, "shogi": 7, "2018": 7, "alphastar": 7, "starcraft": 7, "actor": 7, "imit": 7, "distil": 7, "oriol": 7, "vinyal": 7, "battlefield": 7, "art": [7, 9], "dice": 7, "why": [7, 9, 17], "popular": [7, 9], "remot": [7, 9], "helicopt": 7, "pieter": 7, "abbeel": 7, "2006": 7, "virtual": 7, "safer": 7, "implic": 7, "neurosci": 7, "tool": [7, 11], "docker": 7, "freeglut3": 7, "dev": 7, "xvfb": 7, "x11": 7, "apt": 7, "txt": [7, 9], "configur": 7, "yml": [7, 15], "under": [7, 9, 11, 12, 13, 14], "channel": [7, 13, 14], "pyvirtualdisplai": 7, "anyth": [7, 12], "ffmpeg": 7, "pyopengl": 7, "ipythondisplai": 7, "html": [7, 9], "400x300": 7, "visibl": 7, "300": 7, "echo": 7, "star": 7, "sy": 7, "glob": 7, "base64": 7, "show_any_video": 7, "mp4video": 7, "mp4list": 7, "b64encod": 7, "alt": 7, "autoplai": 7, "height": 7, "400px": 7, "src": 7, "decod": 7, "gameplai": 7, "insid": [7, 8, 9, 10, 12], "instruct": [7, 10], "linux": 7, "maco": 7, "termin": 7, "offici": [7, 8, 9], "deal": [8, 9], "decid": [8, 9], "invalid": 8, "entri": [8, 11, 13, 15], "flag": 8, "unwant": 8, "somehow": 8, "nomask": 8, "associ": 8, "whether": [8, 9], "said": 8, "unmask": 8, "maskedarrai": 8, "datatyp": 8, "fill_valu": 8, "order": [8, 10, 11, 12, 13], "situat": 8, "copi": [8, 10, 17], "own": [8, 9, 13, 14, 17], "bug": 8, "possibli": 8, "compact": 8, "wish": [8, 9, 13], "exclud": 8, "Not": [8, 12], "specif": [8, 9, 10], "univers": [8, 9, 10, 13, 14], "ufunc": 8, "kaggl": [8, 14], "outbreak": 8, "begin": [8, 9, 10, 11, 12, 14], "late": 8, "getcwd": 8, "folder": [8, 9, 14], "filepath": 8, "filenam": 8, "mostli": 8, "seventh": 8, "summari": [8, 12], "extend": 8, "rightmost": 8, "lowermost": 8, "dai": 8, "record": [8, 9], "gather": 8, "genfromtxt": 8, "select": [8, 10, 13, 15, 17], "extract": [8, 9, 13, 14], "skip_head": 8, "portion": [8, 13], "str_": 8, "max_row": 8, "utf": 8, "sig": 8, "geograph": 8, "six": [8, 11], "nbcase": 8, "int_": 8, "string": [8, 9], "whole": [8, 9], "tick": 8, "transpos": [8, 13], "dash": 8, "selected_d": 8, "xtick": 8, "jan": 8, "feb": 8, "graph": [8, 11, 13], "strang": 8, "januari": 8, "februari": 8, "1st": 8, "know": [8, 9, 12, 13], "region": [8, 10, 14], "countri": [8, 9], "provinc": 8, "china": 8, "sens": [8, 13], "group": [8, 9], "totals_row": 8, "china_tot": 8, "247": 8, "288": 8, "817": 8, "11820": 8, "14410": 8, "17237": 8, "someth": [8, 13], "suppos": 8, "258": 8, "270": 8, "375": 8, "7153": 8, "9074": 8, "11177": 8, "520": 8, "604": 8, "683": 8, "422": 8, "493": 8, "566": 8, "attempt": [8, 9], "obvious": 8, "interfer": 8, "nbcases_ma": 8, "masked_valu": 8, "masked_arrai": 8, "mention": [8, 10], "attribut": 8, "mind": [8, 9, 13], "hubei": 8, "china_mask": 8, "278": 8, "574": 8, "835": 8, "11821": 8, "14411": 8, "17238": 8, "999999": 8, "directli": 8, "seem": [8, 9, 10], "agre": 8, "mainland": 8, "hong": 8, "kong": 8, "taiwan": 8, "macau": 8, "unspecifi": 8, "mayb": 8, "nonzero": 8, "correctli": 8, "308": 8, "440": 8, "11791": 8, "14380": 8, "17205": 8, "focus": [8, 9, 14], "mischaracter": 8, "evolut": 8, "curv": [8, 9], "interpol": 8, "int64": 8, "logic": 8, "negat": 8, "u7": 8, "cubic": 8, "line2d": 8, "0x7f1b1c4e7970": 8, "elabor": 8, "unavail": 8, "28th": 8, "ytick": 8, "17500": 8, "ncubic": 8, "substitut": 8, "far": [8, 14], "usemask": 8, "topic": [8, 9], "found": [8, 10, 13, 17], "hardmask": 8, "softmask": 8, "ensheng": 8, "dong": 8, "hongru": 8, "du": 8, "lauren": 8, "gardner": 8, "web": [8, 9], "dashboard": 8, "lancet": 8, "infecti": 8, "diseas": 8, "volum": 8, "page": [8, 9, 10, 12, 13], "533": 8, "issn": 8, "1473": 8, "3099": 8, "doi": [8, 9], "org": 8, "1016": 8, "s1473": 8, "30120": 8, "social": 9, "relev": [9, 11], "acquir": 9, "recurr": 9, "piec": 9, "50": [9, 10, 13], "movi": 9, "sequenti": 9, "todai": [9, 10], "everydai": 9, "discriminatori": 9, "fair": 9, "consider": [9, 10], "consum": 9, "throughout": [9, 10], "question": [9, 10, 12], "pipelin": 9, "calculu": 9, "recommend": 9, "d2l": 9, "datafram": 9, "pooch": 9, "pointer": 9, "tend": [9, 10], "histor": 9, "skew": 9, "imbalanc": 9, "protect": 9, "bias": 9, "outcom": 9, "absenc": 9, "anonym": 9, "trevisan": 9, "reilli": 9, "care": [9, 13], "along": [9, 12, 14], "person": 9, "routin": 9, "impair": 9, "medic": [9, 14], "emot": 9, "pain": 9, "chronic": 9, "ill": 9, "financi": 9, "incom": 9, "welfar": 9, "payment": 9, "discrimin": 9, "abus": 9, "prais": 9, "healthcar": [9, 14], "servic": 9, "suicid": 9, "especi": [9, 14], "compromis": 9, "safeti": 9, "fingerprint": 9, "voic": 9, "difficult": 9, "consent": 9, "platform": 9, "necess": 9, "pseudonym": 9, "curat": [9, 15], "activist": 9, "former": 9, "latter": 9, "maa": 9, "eas": 9, "zenodo": 9, "usag": 9, "commerci": 9, "aforement": 9, "pertain": [9, 16], "globe": 9, "climat": 9, "femin": 9, "lgbtqa": 9, "racism": 9, "newspap": 9, "nation": [9, 14], "archiv": 9, "cite": 9, "transcrib": 9, "speaker": 9, "demograph": 9, "focu": [9, 10, 14], "barnard": 9, "colleg": 9, "leymah": 9, "gbowe": 9, "un": 9, "youth": 9, "malala": 9, "yousafzai": 9, "guardian": 9, "remark": 9, "unga": 9, "racial": 9, "linda": 9, "greenfield": 9, "mission": 9, "dare": 9, "greta": 9, "thunberg": 9, "nbc": 9, "silenc": 9, "severn": 9, "suzuki": 9, "earth": 9, "charter": 9, "hope": 9, "harvei": 9, "milk": 9, "museum": 9, "boston": 9, "thrive": 9, "confer": [9, 14], "ellen": 9, "huffpost": 9, "dream": 9, "martin": 9, "luther": 9, "king": 9, "marshal": 9, "crucial": [9, 11], "dive": 9, "brief": 9, "undertak": 9, "clean": 9, "denois": 9, "unhelp": 9, "nois": [9, 14], "lowercas": 9, "bracket": [9, 12], "sentenc": [9, 12], "cluster": 9, "embed": 9, "space": [9, 11], "glove": 9, "unsupervis": 9, "stanford": 9, "global": 9, "corpu": 9, "edu": 9, "project": [9, 10, 11, 17], "billion": 9, "token": 9, "840": 9, "exhibit": 9, "stereotyp": 9, "gender": 9, "trace": 9, "occup": 9, "problemat": 9, "nearest": 9, "de": [9, 14], "cs224n": 9, "1184": 9, "6835575": 9, "pdf": 9, "pd": 9, "zipfil": 9, "textpreprocess": 9, "txt_to_df": 9, "str": 9, "imdb_train": 9, "in_fil": 9, "strip": 9, "df": [9, 10], "reset_index": 9, "drop": 9, "unzipp": 9, "to_extract": 9, "outdir": 9, "output_fil": 9, "cleantext": 9, "text_column": 9, "remove_stopword": 9, "remove_punc": 9, "hous": 9, "bool": [9, 14], "stopword": 9, "punctuat": 9, "symbol": 9, "gist": 9, "sebleier": 9, "554280": 9, "am": 9, "he": 9, "her": 9, "herself": 9, "him": 9, "himself": 9, "m": [9, 11, 13], "itself": [9, 10], "me": 9, "my": 9, "myself": 9, "nor": 9, "ought": 9, "she": 9, "theirs": 9, "themselv": [9, 10], "too": 9, "whom": 9, "yourselv": 9, "remove_tag": 9, "sub": 9, "data_without_stopword": 9, "clean_": 9, "cw": 9, "regex": 9, "to_numpi": 9, "sent_tokenis": 9, "w": [9, 11], "pop": 9, "sentences_clean": 9, "word_tokenis": 9, "loadglovemodel": 9, "emb_path": 9, "dict": 9, "glovemodel": 9, "splitlin": 9, "wordembed": 9, "text_to_para": 9, "para_len": 9, "paragraph": 9, "no_para": 9, "ceil": 9, "aggreg": 9, "divmod": 9, "agg_sent": 9, "para": 9, "sent": 9, "scientist": 9, "registri": 9, "system": [9, 10, 11, 12], "os_cach": 9, "hash": 9, "uncorrupt": 9, "6a38ea6ab5e1902cc03f6b9294ceea5e8ab985af991f35bcabd301a08ea5b3f0": 9, "imdb_test": 9, "7363ef08ad996bf4233b115008d6d7f9814b7cc0f4d13ab570b938701eadefeb": 9, "6b": 9, "50d": 9, "617afb2fe6cbd085c235baf7a465b96f4112bd7f7ccb2b2cbd649fed9cbcf2fb": 9, "custom": 9, "5281": 9, "4117827": 9, "textproc": 9, "train_df": 9, "test_df": 9, "occurr": 9, "ahead": [9, 13], "refrain": 9, "speech_data_path": 9, "speech_df": 9, "read_csv": 9, "x_pred": 9, "unzip": 9, "act": [9, 11], "300d": 9, "emb_matrix": 9, "plain": 9, "suitabl": 9, "multilay": 9, "mlp": 9, "straight": 9, "never": [9, 12], "share": [9, 12, 16, 17], "moreov": 9, "vari": [9, 10, 11], "rnn": 9, "regardless": [9, 13], "retain": [9, 13], "blow": 9, "connect": 9, "shortcom": 9, "vanish": 9, "address": 9, "gif": [9, 14], "rectangl": [9, 13], "respons": [9, 11], "rememb": [9, 15], "via": [9, 14], "c_": 9, "dedic": 9, "gate": 9, "initialise_param": 9, "hidden_dim": 9, "input_dim": 9, "wf": 9, "bf": 9, "wi": 9, "bi": [9, 10], "candid": 9, "wcm": 9, "bcm": 9, "wo": 9, "bo": 9, "b2": 9, "forgotten": 9, "similarli": [9, 11, 13], "stai": 9, "fmin": 9, "ab": [9, 10, 11], "old": 9, "attent": 9, "fp_forget_g": 9, "concat": 9, "ft": 9, "govern": 9, "tanh": 9, "regul": 9, "flow": 9, "fp_input_g": 9, "cmt": 9, "fp_output_g": 9, "next_c": 9, "ot": 9, "next_h": 9, "firstli": 9, "fp_fc_layer": 9, "last_h": 9, "z2": 9, "a2": 9, "forward_prop": 9, "x_vec": 9, "time_step": 9, "initialis": 9, "prev_h": 9, "prev_c": 9, "lstm_valu": 9, "fc_valu": 9, "happi": 9, "xt": 9, "lstm_cach": 9, "fc_cach": 9, "accumul": [9, 13], "straightforward": [9, 12, 14], "nonetheless": 9, "initialize_grad": 9, "param": 9, "behind": [9, 10], "suggest": [9, 12, 14], "christina": 9, "kouridi": 9, "bp_forget_g": 9, "dh_prev": 9, "dc_prev": 9, "dft": 9, "dl": 9, "da2": 9, "dz2": 9, "dwf": 9, "dbf": 9, "keepdim": 9, "dh_f": 9, "bp_input_g": 9, "dit": 9, "dcmt": 9, "dwi": 9, "dwcm": 9, "dbi": 9, "dbcm": 9, "dhi": 9, "dh_i": 9, "dhcm": 9, "dh_cm": 9, "bp_output_g": 9, "dwo": 9, "dbo": 9, "dho": 9, "dh_o": 9, "bp_fc_layer": 9, "db2": 9, "dh_last": 9, "backprop": 9, "relat": [9, 10, 11, 13], "prev": 9, "adam": 9, "stochast": 9, "recent": [9, 12], "broader": 9, "beta1": 9, "beta2": 9, "converg": [9, 10], "robust": 9, "initialise_mav": 9, "update_paramet": 9, "001": 9, "impli": 9, "poorli": 9, "behav": 9, "likelihood": 9, "loss_f": 9, "epsilon": 9, "divis": [9, 12], "squeez": 9, "testing_loss": 9, "train_j": 9, "y_pred": 9, "test_j": 9, "mean_train_cost": 9, "mean_test_cost": 9, "diagnos": 9, "add_subplot": [9, 11], "111": [9, 13], "set_ylabel": [9, 10], "break": [9, 11], "isfil": 9, "allow_pickl": 9, "enumer": [9, 10], "pred": 9, "para_token": 9, "sent_prob": 9, "threshold": [9, 10, 14], "pos_indic": 9, "neg_indic": 9, "pos_para": 9, "neg_para": 9, "no_pos_para": 9, "no_neg_para": 9, "percentag": 9, "pos_perc": 9, "bar": 9, "carri": 9, "priorit": 9, "clariti": 9, "neighbor": 9, "context": [9, 14], "led": 9, "encourag": [9, 10, 13], "tweak": [9, 10], "easi": [9, 12], "primarili": 9, "express": [9, 10, 12], "ironi": 9, "sarcasm": 9, "humor": 9, "media": 9, "abbrevi": 9, "neatli": 9, "convei": [9, 10, 11], "ag": 9, "grow": [9, 10], "induct": 9, "essenti": 9, "contextu": 9, "aris": [9, 10], "societ": 9, "creep": 9, "amplifi": [9, 12], "femal": 9, "male": 9, "awar": [9, 13], "demand": 9, "drill": 9, "ethnic": 9, "hopefulli": 9, "explod": [9, 10], "bidirect": 9, "nowadai": 9, "tackl": 9, "plagu": 9, "transfer": 9, "parallel": 9, "lengthi": 9, "ture": 9, "institut": [9, 14], "www": 9, "ac": [9, 11], "uk": 9, "intellig": 9, "shift": 9, "beauti": 10, "compel": 10, "oftentim": 10, "rel": [10, 14], "coastlin": 10, "seashel": 10, "fern": 10, "antenna": 10, "realli": 10, "began": 10, "truli": 10, "appreci": 10, "1970": 10, "graphic": [10, 12], "accident": 10, "discoveri": 10, "beno\u00eet": 10, "stumbl": 10, "mystifi": 10, "possess": 10, "ever": 10, "effici": 10, "variat": 10, "uniqu": 10, "make_axis_locat": 10, "mpl_toolkit": 10, "axes_grid1": 10, "make_axes_locat": 10, "elementari": 10, "expon": 10, "sin": 10, "shortli": 10, "behaviour": 10, "2j": 10, "4j": 10, "shrink": 10, "plane": 10, "mesh": 10, "meshgrid": 10, "1j": 10, "greatli": 10, "absolut": 10, "modulu": 10, "3d": [10, 11], "scatterplot": 10, "imaginari": 10, "set_zlabel": 10, "rough": [10, 15], "closest": 10, "0i": 10, "lose": 10, "impress": 10, "mundan": 10, "meet": [10, 17], "ey": 10, "exot": 10, "z_1": 10, "4i": 10, "z_2": 10, "z_3": 10, "1i": 10, "selected_valu": 10, "41j": 10, "num_it": 10, "colorbar": 10, "bottom": [10, 12], "surpris": 10, "hypothesi": 10, "prime": 10, "chaotic": 10, "jump": 10, "despit": [10, 11], "tini": 10, "diverg": 10, "although": [10, 13], "uncertain": 10, "surpass": 10, "distanc": [10, 11, 14], "doom": 10, "radiu": [10, 11], "quantifi": 10, "answer": [10, 12], "pose": 10, "talli": 10, "divergence_r": 10, "diverge_len": 10, "conv_mask": 10, "confus": 10, "glanc": 10, "quicker": 10, "suffici": 10, "unbeat": 10, "condition": 10, "resort": 10, "colour": 10, "im": 10, "extent": 10, "cax": 10, "append_ax": 10, "pad": 10, "stun": 10, "yellow": 10, "purpl": 10, "pattern": 10, "border": 10, "fascin": 10, "realiz": 10, "fill": [10, 12], "likewis": 10, "boundari": 10, "greenish": 10, "wider": 10, "reus": 10, "rest": 10, "small_mesh": 10, "plot_fract": 10, "rainbow": 10, "newli": 10, "kwarg": 10, "pi": [10, 14], "eleg": 10, "plasma": 10, "75": 10, "greens_r": 10, "famou": 10, "equival": 10, "infinit": 10, "renam": 10, "complex128": 10, "hot": [10, 14], "general_julia": 10, "cool": 10, "emerg": 10, "stick": 10, "rais": 10, "base_degre": 10, "tight_layout": 10, "needless": 10, "fiddl": 10, "densiti": 10, "involv": [10, 11], "subtract": 10, "ratio": 10, "newton_fract": 10, "pz": 10, "dp": 10, "effortlessli": 10, "lightgrai": 10, "15z": 10, "8z": 10, "60z": 10, "copper": 10, "tan": 10, "dz": 10, "sec": 10, "f_tan": 10, "d_tan": 10, "neat": 10, "wild": 10, "sum_": 10, "sin_sum": 10, "d_sin_sum": 10, "wacki": 10, "fun": 10, "terrain": [10, 14], "distinct": [10, 12], "yet": 10, "excit": 10, "gist_stern": 10, "sine": 10, "plasma_r": 10, "jet": 10, "got": 10, "accid": 10, "mistak": 10, "endless": 10, "suppli": 10, "creation": 10, "tinker": 10, "complic": [10, 11], "verifi": 10, "recap": 10, "hausdorff": 10, "treatment": 10, "floor": 11, "beam": 11, "reaction": 11, "resist": 11, "movement": 11, "cabl": 11, "unkown": 11, "comand": 11, "linalg": [11, 13], "norm": [11, 13], "mass": 11, "awai": 11, "f_x": 11, "f_y": 11, "f_z": 11, "r_x": 11, "r_y": 11, "r_z": 11, "centroid": 11, "forcea": 11, "forceb": 11, "quiver": 11, "d3": 11, "set_xlim": 11, "set_ylim": 11, "set_zlim": 11, "eman": 11, "meant": 11, "easili": 11, "forcec": 11, "counteract": 11, "prior": 11, "broken": 11, "nullifi": 11, "signifi": 11, "outli": 11, "rotat": 11, "experienc": 11, "coordin": 11, "stationari": 11, "pole": 11, "secur": 11, "ground": 11, "5n": 11, "perpendicularli": 11, "2m": 11, "wire": 11, "attach": 11, "tension": 11, "cord": 11, "3m": 11, "polebas": 11, "cordbas": 11, "cordconnect": 11, "poledirect": 11, "corddirect": 11, "cordunit": 11, "83205029": 11, "5547002": 11, "cordtens": 11, "forcecord": 11, "16025147": 11, "77350098": 11, "momentcord": 11, "32050294": 11, "meter": 11, "bd": 11, "BE": 11, "cf": 11, "unitbd": 11, "unitb": 11, "unitcf": 11, "radbd": 11, "radb": 11, "radcf": 11, "t_": 11, "r_": 11, "390": 11, "130": [11, 13], "780": 11, "1170": 11, "f_": 11, "m_": 11, "2t_": 11, "unknown": 11, "780n": 11, "390n": 11, "195n": 11, "1170n": 11, "130n": 11, "kinet": 11, "veloc": 11, "beer": 11, "johnston": 11, "mazurek": 11, "daniel": 12, "procida": 12, "di\u00e1taxi": 12, "cc": 12, "BY": 12, "sa": 12, "templat": 12, "craft": 12, "distinguish": [12, 13], "portrait": 12, "intend": 12, "school": 12, "bullet": 12, "overexplain": 12, "bog": 12, "obscur": 12, "knew": 12, "enthusiasm": 12, "imagin": 12, "audienc": 12, "willing": 12, "incomplet": 12, "english": [12, 15], "ordinarili": 12, "abstract": 12, "tipoff": 12, "bake": 12, "cake": 12, "endpoint": 12, "payoff": 12, "recip": 12, "ingredi": 12, "readi": [12, 13], "oven": 12, "expert": 12, "writer": 12, "learner": 12, "fall": 12, "grade": 12, "ye": 12, "assur": 12, "except": [12, 13], "invit": 12, "artist": 12, "toolset": 12, "aren": 12, "scan": 12, "somebodi": 12, "polish": [12, 15], "decor": 12, "likeli": 12, "engag": [12, 15], "towner": 12, "feel": 12, "pick": 12, "destin": 12, "sight": 12, "recur": 12, "crossrefer": 12, "strengthen": 12, "bad": 12, "traceback": 12, "comment": [12, 15], "tripl": 12, "backquot": 12, "won": 12, "angl": 12, "lt": 12, "gt": 12, "zerodivisionerror": 12, "bbe761e74a70": 12, "exercis": 12, "perhap": 12, "footnot": 12, "spoiler": 12, "ideal": 12, "bare": 12, "inspir": 12, "decomposit": 13, "singular": 13, "misc": 13, "img": [13, 14], "tmp": 13, "ipykernel_432": 13, "2202046956": 13, "deprecationwarn": 13, "deprec": 13, "v1": 13, "imread": [13, 14], "submodul": 13, "imageio": 13, "treat": 13, "crash": 13, "scikit": [13, 14], "inlin": 13, "forth": 13, "768": 13, "1024": [13, 14], "tupl": 13, "fact": 13, "rgb": 13, "768x1024": 13, "furthermor": 13, "ndim": 13, "3rd": 13, "syntax": 13, "138": 13, "153": 13, "119": 13, "131": 13, "139": 13, "89": 13, "110": 13, "118": 13, "134": 13, "146": 13, "115": 13, "117": 13, "133": 13, "107": 13, "120": 13, "85": 13, "112": 13, "img_arrai": 13, "scalar": [13, 14], "broadcast": 13, "img_as_float": 13, "inquir": 13, "minimum": [13, 14], "red_arrai": 13, "green_arrai": 13, "blue_arrai": 13, "diagon": 13, "largest": 13, "smallest": 13, "colorimetri": 13, "fairli": 13, "2126": 13, "7152": 13, "0722": 13, "matmul": 13, "img_grai": 13, "colormap": [13, 14], "vt": 13, "worri": [13, 15], "pretti": 13, "compat": [13, 14], "valueerror": 13, "econom": 13, "reconstruct": 13, "768x768": 13, "1024x1024": [13, 14], "fill_diagon": 13, "explan": 13, "43712046073728e": 13, "allclos": 13, "150th": 13, "intact": 13, "approx": 13, "wors": 13, "instinct": 13, "mxn": 13, "permut": 13, "fortun": 13, "reorder": 13, "img_array_transpos": 13, "reassembl": 13, "interchang": 13, "indistinguish": 13, "outsid": 13, "558487697898684e": 13, "0000000000000053": 13, "clip": 13, "excis": 13, "peform": 13, "hood": 13, "warn": 13, "messag": 13, "approx_img": 13, "unfamiliar": 13, "ellipsi": 13, "placehold": 13, "sharp": 13, "golub": 13, "van": 13, "loan": 13, "baltimor": 13, "hopkin": 13, "press": 13, "1985": 13, "matlab": 13, "idl": 13, "workflow": [14, 15], "pneumonia": 14, "particularli": 14, "radiologi": 14, "chestx": 14, "ray8": 14, "health": 14, "nih": 14, "png": 14, "patient": 14, "repositori": [14, 15, 17], "cvpr": 14, "gigabyt": 14, "quickstart": 14, "dicom": 14, "suit": 14, "ndimag": 14, "00000011_001": 14, "dir": 14, "xray_imag": 14, "v3": 14, "008": 14, "num_img": 14, "combined_xray_images_1": 14, "00000011_00": 14, "anim": 14, "mimwrit": 14, "gif_path": 14, "durat": 14, "biomed": 14, "emphas": 14, "rapid": 14, "smooth": 14, "gaussian_laplac": 14, "xray_image_laplace_gaussian": 14, "frequenc": 14, "gaussian_gradient_magnitud": 14, "x_ray_image_gaussian_gradi": 14, "spatial": 14, "horizont": 14, "vertic": 14, "3x3": 14, "kernel": 14, "pythagorean": 14, "theorem": 14, "hypot": 14, "rescal": 14, "output_channel": 14, "input_channel": 14, "min_valu": 14, "max_valu": 14, "x_sobel": 14, "y_sobel": 14, "xray_image_sobel": 14, "float16": 14, "float32": 14, "cmrmap": 14, "fourier": 14, "smoothen": 14, "prewitt": 14, "fourier_gaussian": 14, "x_prewitt": 14, "y_prewitt": 14, "xray_image_canni": 14, "prism": 14, "nipy_spectr": 14, "array_lik": 14, "median": 14, "172": 14, "52233219146729": 14, "256": 14, "histogram": 14, "pixel_intensity_distribut": 14, "bin": 14, "240": 14, "exceed": 14, "150": 14, "xray_image_mask_noisi": 14, "xray_image_mask_less_noisi": 14, "noisi": 14, "openi": 14, "databas": 14, "bandwidth": 14, "restrict": 14, "segment": 14, "pydicom": 14, "quest": 14, "datacamp": 14, "raspberri": 14, "maker": 14, "portal": 14, "slide": 14, "cs6670": 14, "cornel": 14, "carpentri": 14, "385": 14, "carnegi": 14, "mellon": 14, "welcom": 15, "propos": 15, "pleas": 15, "draft": 15, "commun": [15, 17], "effort": 15, "artwork": 15, "myst": 15, "nb": 15, "jupytext": 15, "commonmark": 15, "repo": 15, "restructuredtext": 15, "rst": 15, "barrier": 15, "ipynb": [15, 17], "plan": 15, "respond": 15, "quickli": 15, "fork": 15, "haven": 15, "branch": 15, "readm": 15, "edit": 15, "secret": 15, "properli": 15, "submiss": 15, "mask": [16, 17], "button": 17, "rocket": 17, "icon": 17, "corner": 17, "conduct": 17, "team": 17, "nep": 17}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"numpi": [0, 2, 4, 6, 11, 12, 16, 17], "applic": [0, 11], "articl": [1, 17], "help": [1, 17], "improv": [1, 17], "tutori": [1, 12, 15, 17], "determin": [2, 11], "moor": 2, "": [2, 4, 5, 9, 11, 12], "law": [2, 11], "real": [2, 12], "data": [2, 4, 6, 8, 9], "what": [2, 3, 4, 5, 8, 10, 11, 12], "you": [2, 3, 4, 5, 8, 9, 10, 11, 12], "ll": [2, 3, 4, 5, 8, 10, 11, 12], "do": [2, 3, 4, 5, 8, 9, 10, 11, 12], "skill": 2, "learn": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "need": [2, 3, 4, 5, 8, 10, 11, 12], "build": [2, 5, 6, 9], "an": [2, 9, 13, 14, 15], "exponenti": 2, "function": [2, 7], "load": [2, 4, 6, 9], "histor": 2, "manufactur": 2, "your": [2, 3, 4, 7, 10, 12, 15], "workspac": 2, "calcul": [2, 5], "growth": 2, "curv": 2, "transistor": 2, "share": [2, 4], "result": [2, 14], "zip": 2, "arrai": [2, 4, 8, 13, 14], "csv": [2, 4], "file": [2, 3, 4], "creat": [2, 4, 7, 10, 15], "own": [2, 10, 12, 15], "comma": 2, "separ": 2, "valu": [2, 5, 11], "wrap": [2, 3, 4, 11], "up": [2, 3, 4, 7, 11], "refer": [2, 8, 11], "pair": [3, 5], "jupyt": [3, 7, 15], "notebook": [3, 7, 12, 15], "myst": 3, "nb": 3, "background": 3, "ipynb": 3, "md": 3, "1": [3, 6, 9], "classic": 3, "jupytext": 3, "2": [3, 6, 9], "jupyterlab": 3, "3": [3, 6, 9], "command": 3, "line": 3, "save": 4, "savez": 4, "remov": 4, "them": 4, "back": 4, "reassign": 4, "npzfile": 4, "x": [4, 14], "y": 4, "success": 4, "anoth": [4, 11], "option": 4, "human": 4, "readabl": 4, "rearrang": 4, "singl": 4, "2d": 4, "us": [4, 8, 12, 14, 17], "savetxt": 4, "our": [4, 9, 15], "rememb": 4, "type": 4, "analyz": 5, "impact": 5, "lockdown": 5, "air": 5, "qualiti": 5, "delhi": 5, "india": 5, "The": [5, 12, 14], "problem": 5, "pollut": 5, "dataset": [5, 6, 9, 12], "index": 5, "move": 5, "averag": 5, "sub": 5, "indic": 5, "student": 5, "t": 5, "test": [5, 6], "aqi": 5, "sampl": 5, "defin": [5, 7], "hypothesi": 5, "statist": 5, "p": 5, "mean": 5, "In": [5, 8, 10, 12], "practic": [5, 8, 12], "further": [5, 8, 10, 12, 13], "read": [5, 8, 10, 12, 13], "deep": [6, 7, 9], "mnist": 6, "prerequisit": [6, 7, 9, 13, 14], "tabl": [6, 7, 9, 14], "content": [6, 7, 9, 13, 14, 15, 17], "preprocess": [6, 7, 9], "convert": 6, "imag": [6, 14], "float": 6, "point": 6, "format": 6, "label": 6, "through": 6, "categor": 6, "one": 6, "hot": 6, "encod": 6, "train": [6, 7, 9], "small": 6, "neural": [6, 7, 9], "network": [6, 7, 9], "from": [6, 7, 9], "scratch": 6, "block": 6, "model": [6, 9], "architectur": [6, 9], "summari": 6, "compos": 6, "begin": 6, "next": [6, 7, 9, 14], "step": [6, 7, 9, 14], "reinforc": 7, "pong": 7, "pixel": 7, "A": 7, "note": [7, 15], "rl": 7, "glossari": 7, "set": [7, 10], "frame": 7, "observ": 7, "polici": 7, "forward": [7, 9], "pass": 7, "updat": [7, 9], "backpropag": [7, 9], "discount": 7, "reward": 7, "expect": 7, "return": 7, "agent": 7, "number": 7, "episod": 7, "appendix": 7, "how": [7, 9, 12], "video": 7, "playback": 7, "mask": [8, 14], "ar": [8, 12], "when": [8, 12], "can": 8, "thei": 8, "see": 8, "covid": 8, "19": 8, "explor": 8, "miss": 8, "fit": 8, "sentiment": 9, "analysi": 9, "notabl": 9, "speech": 9, "last": 9, "decad": 9, "collect": 9, "imdb": 9, "review": 9, "transcript": 9, "introduct": 9, "long": 9, "short": 9, "term": 9, "memori": 9, "overview": 9, "propag": 9, "But": 9, "obtain": 9, "lstm": 9, "output": 9, "paramet": 9, "look": 9, "ethic": 9, "perspect": 9, "plot": [10, 12], "fractal": 10, "warmup": 10, "julia": 10, "mandelbrot": 10, "gener": 10, "newton": [10, 11], "conclus": 10, "On": [10, 12], "static": 11, "equilibrium": 11, "solv": 11, "second": [11, 14], "sum": 11, "moment": 11, "find": 11, "physic": 11, "properti": [11, 13], "exampl": 11, "addit": 11, "write": 12, "after": 12, "horizont": 12, "rule": 12, "start": 12, "head": 12, "titl": 12, "have": 12, "verb": 12, "lowercas": 12, "sai": 12, "why": [12, 15], "differ": 12, "avoid": 12, "asid": 12, "illustr": 12, "possibl": 12, "similar": 12, "make": 12, "googl": 12, "doc": 12, "style": 12, "guid": 12, "must": 12, "fulli": 12, "execut": [12, 17], "linear": 13, "algebra": 13, "n": 13, "dimension": 13, "learner": 13, "profil": 13, "object": 13, "shape": 13, "axi": 13, "oper": [13, 14], "approxim": 13, "appli": [13, 14], "all": 13, "color": 13, "product": 13, "final": 13, "word": 13, "rai": 14, "process": 14, "examin": 14, "imageio": 14, "combin": 14, "multidimension": 14, "demonstr": 14, "progress": 14, "edg": 14, "detect": 14, "laplacian": 14, "gaussian": 14, "gradient": 14, "sobel": 14, "canni": 14, "filter": 14, "laplac": 14, "deriv": 14, "magnitud": 14, "method": 14, "feldman": 14, "np": 14, "where": 14, "compar": 14, "contribut": 15, "ad": 15, "issu": 15, "check": 15, "out": 15, "suggest": 15, "templat": 15, "upload": 15, "featur": 16, "non": 17, "link": 17, "resourc": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"NumPy Applications": [[0, "numpy-applications"]], "Articles": [[1, "articles"]], "Help improve the tutorials!": [[1, null], [17, null]], "Determining Moore\u2019s Law with real data in NumPy": [[2, "determining-moore-s-law-with-real-data-in-numpy"]], "What you\u2019ll do": [[2, "what-you-ll-do"], [3, "what-you-ll-do"], [4, "what-you-ll-do"], [5, "what-you-ll-do"], [8, "what-you-ll-do"], [10, "what-you-ll-do"], [12, "what-you-ll-do"]], "Skills you\u2019ll learn": [[2, "skills-you-ll-learn"]], "What you\u2019ll need": [[2, "what-you-ll-need"], [3, "what-you-ll-need"], [4, "what-you-ll-need"], [5, "what-you-ll-need"], [8, "what-you-ll-need"], [10, "what-you-ll-need"], [12, "what-you-ll-need"]], "Building Moore\u2019s law as an exponential function": [[2, "building-moore-s-law-as-an-exponential-function"]], "Loading historical manufacturing data to your workspace": [[2, "loading-historical-manufacturing-data-to-your-workspace"]], "Calculating the historical growth curve for transistors": [[2, "calculating-the-historical-growth-curve-for-transistors"]], "Sharing your results as zipped arrays and a csv": [[2, "sharing-your-results-as-zipped-arrays-and-a-csv"]], "Zipping the arrays into a file": [[2, "zipping-the-arrays-into-a-file"]], "Creating your own comma separated value file": [[2, "creating-your-own-comma-separated-value-file"]], "Wrapping up": [[2, "wrapping-up"], [3, "wrapping-up"], [4, "wrapping-up"], [11, "wrapping-up"]], "References": [[2, "references"], [11, "references"]], "Pairing Jupyter notebooks and MyST-NB": [[3, "pairing-jupyter-notebooks-and-myst-nb"]], "What you\u2019ll learn": [[3, "what-you-ll-learn"], [4, "what-you-ll-learn"], [5, "what-you-ll-learn"], [8, "what-you-ll-learn"], [10, "what-you-ll-learn"], [12, "what-you-ll-learn"]], "Background": [[3, "background"]], "Pair your notebook files .ipynb and .md": [[3, "pair-your-notebook-files-ipynb-and-md"]], "1. Classic Jupyter Jupytext pairing": [[3, null]], "2. JupyterLab Jupytext pairing": [[3, null]], "3. Command line Jupytext pairing": [[3, null]], "Saving and sharing your NumPy arrays": [[4, "saving-and-sharing-your-numpy-arrays"]], "Create your arrays": [[4, "create-your-arrays"]], "Save your arrays with NumPy\u2019s savez": [[4, "save-your-arrays-with-numpy-s-savez"]], "Remove the saved arrays and load them back with NumPy\u2019s load": [[4, "remove-the-saved-arrays-and-load-them-back-with-numpy-s-load"]], "Reassign the NpzFile arrays to x and y": [[4, "reassign-the-npzfile-arrays-to-x-and-y"]], "Success": [[4, "success"]], "Another option: saving to human-readable csv": [[4, "another-option-saving-to-human-readable-csv"]], "Rearrange the data into a single 2D array": [[4, "rearrange-the-data-into-a-single-2d-array"]], "Save the data to csv file using savetxt": [[4, "save-the-data-to-csv-file-using-savetxt"]], "Our arrays as a csv file": [[4, "our-arrays-as-a-csv-file"]], "Success, but remember your types": [[4, "success-but-remember-your-types"]], "Analyzing the impact of the lockdown on air quality in Delhi, India": [[5, "analyzing-the-impact-of-the-lockdown-on-air-quality-in-delhi-india"]], "The problem of air pollution": [[5, "the-problem-of-air-pollution"]], "Building the dataset": [[5, "building-the-dataset"]], "Calculating the Air Quality Index": [[5, "calculating-the-air-quality-index"]], "Moving averages": [[5, "moving-averages"]], "Sub-indices": [[5, "sub-indices"]], "Air quality indices": [[5, "air-quality-indices"]], "Paired Student\u2019s t-test on the AQIs": [[5, "paired-student-s-t-test-on-the-aqis"]], "Sampling": [[5, "sampling"]], "Defining the hypothesis": [[5, "defining-the-hypothesis"]], "Calculating the test statistics": [[5, "calculating-the-test-statistics"]], "What do the t and p values mean?": [[5, "what-do-the-t-and-p-values-mean"]], "In practice\u2026": [[5, "in-practice"], [12, "in-practice"]], "Further reading": [[5, "further-reading"], [8, "further-reading"], [10, "further-reading"], [12, "further-reading"], [13, "further-reading"]], "Deep learning on MNIST": [[6, "deep-learning-on-mnist"]], "Prerequisites": [[6, "prerequisites"], [7, "prerequisites"], [9, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"]], "Table of contents": [[6, "table-of-contents"], [7, "table-of-contents"], [9, "table-of-contents"], [14, "table-of-contents"]], "1. Load the MNIST dataset": [[6, "load-the-mnist-dataset"]], "2. Preprocess the data": [[6, "preprocess-the-data"]], "Convert the image data to the floating-point format": [[6, "convert-the-image-data-to-the-floating-point-format"]], "Convert the labels to floating point through categorical/one-hot encoding": [[6, "convert-the-labels-to-floating-point-through-categorical-one-hot-encoding"]], "3. Build and train a small neural network from scratch": [[6, "build-and-train-a-small-neural-network-from-scratch"]], "Neural network building blocks with NumPy": [[6, "neural-network-building-blocks-with-numpy"]], "Model architecture and training summary": [[6, "model-architecture-and-training-summary"]], "Compose the model and begin training and testing it": [[6, "compose-the-model-and-begin-training-and-testing-it"]], "Next steps": [[6, "next-steps"], [7, "next-steps"], [14, "next-steps"]], "Deep reinforcement learning with Pong from pixels": [[7, "deep-reinforcement-learning-with-pong-from-pixels"]], "A note on RL and deep RL": [[7, "a-note-on-rl-and-deep-rl"]], "Deep RL glossary": [[7, "deep-rl-glossary"]], "Set up Pong": [[7, "set-up-pong"]], "Preprocess frames (the observation)": [[7, "preprocess-frames-the-observation"]], "Create the policy (the neural network) and the forward pass": [[7, "create-the-policy-the-neural-network-and-the-forward-pass"]], "Set up the update step (backpropagation)": [[7, "set-up-the-update-step-backpropagation"]], "Define the discounted rewards (expected return) function": [[7, "define-the-discounted-rewards-expected-return-function"]], "Train the agent for a number of episodes": [[7, "train-the-agent-for-a-number-of-episodes"]], "Appendix": [[7, "appendix"]], "Notes on RL and deep RL": [[7, "notes-on-rl-and-deep-rl"]], "How to set up video playback in your Jupyter notebook": [[7, "how-to-set-up-video-playback-in-your-jupyter-notebook"]], "Masked Arrays": [[8, "masked-arrays"]], "What are masked arrays?": [[8, "what-are-masked-arrays"]], "When can they be useful?": [[8, "when-can-they-be-useful"]], "Using masked arrays to see COVID-19 data": [[8, "using-masked-arrays-to-see-covid-19-data"]], "Exploring the data": [[8, "exploring-the-data"]], "Missing data": [[8, "missing-data"]], "Fitting Data": [[8, "fitting-data"]], "In practice": [[8, "in-practice"]], "Reference": [[8, "reference"]], "Sentiment Analysis on notable speeches of the last decade": [[9, "sentiment-analysis-on-notable-speeches-of-the-last-decade"]], "1. Data Collection": [[9, "data-collection"]], "Collecting the IMDb reviews dataset": [[9, "collecting-the-imdb-reviews-dataset"]], "Collecting and loading the speech transcripts": [[9, "collecting-and-loading-the-speech-transcripts"]], "2. Preprocess the datasets": [[9, "preprocess-the-datasets"]], "3. Build the Deep Learning Model\u00b6": [[9, "build-the-deep-learning-model"]], "Introduction to a Long Short Term Memory Network": [[9, "introduction-to-a-long-short-term-memory-network"]], "Overview of the Model Architecture": [[9, "overview-of-the-model-architecture"]], "Forward Propagation": [[9, "forward-propagation"]], "But how do you obtain sentiment from the LSTM\u2019s output?": [[9, "but-how-do-you-obtain-sentiment-from-the-lstm-s-output"]], "Backpropagation": [[9, "backpropagation"]], "Updating the Parameters": [[9, "updating-the-parameters"]], "Training the Network": [[9, "training-the-network"]], "Sentiment Analysis on the Speech Data": [[9, "sentiment-analysis-on-the-speech-data"]], "Looking at our Neural Network from an ethical perspective": [[9, "looking-at-our-neural-network-from-an-ethical-perspective"]], "Next Steps": [[9, "next-steps"]], "Plotting Fractals": [[10, "plotting-fractals"]], "Warmup": [[10, "warmup"]], "Julia set": [[10, "julia-set"]], "Mandelbrot set": [[10, "mandelbrot-set"]], "Generalizing the Julia set": [[10, "generalizing-the-julia-set"]], "Newton Fractals": [[10, "newton-fractals"]], "Creating your own fractals": [[10, "creating-your-own-fractals"]], "In conclusion": [[10, "in-conclusion"]], "On your own": [[10, "on-your-own"], [12, "on-your-own"]], "Determining Static Equilibrium in NumPy": [[11, "determining-static-equilibrium-in-numpy"]], "What you\u2019ll do:": [[11, "what-you-ll-do"]], "What you\u2019ll learn:": [[11, "what-you-ll-learn"]], "What you\u2019ll need:": [[11, "what-you-ll-need"]], "Solving equilibrium with Newton\u2019s second law": [[11, "solving-equilibrium-with-newton-s-second-law"]], "Solving Equilibrium as a sum of moments": [[11, "solving-equilibrium-as-a-sum-of-moments"]], "Finding values with physical properties": [[11, "finding-values-with-physical-properties"]], "Another Example": [[11, "another-example"]], "Additional Applications": [[11, "additional-applications"]], "Learn to write a NumPy tutorial": [[12, "learn-to-write-a-numpy-tutorial"]], "After a horizontal rule, start your own headings": [[12, "after-a-horizontal-rule-start-your-own-headings"]], "Titles have verbs": [[12, "titles-have-verbs"]], "Titles are lowercase": [[12, "titles-are-lowercase"]], "What to say in \u201cWhat you\u2019ll learn\u201d": [[12, "what-to-say-in-what-you-ll-learn"]], "Why are \u201cWhat you\u2019ll do\u201d and \u201cWhat you\u2019ll learn\u201d different?": [[12, "why-are-what-you-ll-do-and-what-you-ll-learn-different"]], "Avoid asides": [[12, "avoid-asides"]], "Use plots and illustrations": [[12, "use-plots-and-illustrations"]], "Use real datasets when possible": [[12, "use-real-datasets-when-possible"]], "Tutorials and how-to\u2019s \u2013 similar but different": [[12, "tutorials-and-how-to-s-similar-but-different"]], "Make use of the Google doc style guide": [[12, "make-use-of-the-google-doc-style-guide"]], "The notebook must be fully executable": [[12, "the-notebook-must-be-fully-executable"]], "Linear algebra on n-dimensional arrays": [[13, "linear-algebra-on-n-dimensional-arrays"]], "Learner profile": [[13, "learner-profile"]], "Learning Objectives": [[13, "learning-objectives"]], "Content": [[13, "content"], [17, "content"]], "Shape, axis and array properties": [[13, "shape-axis-and-array-properties"]], "Operations on an axis": [[13, "operations-on-an-axis"]], "Approximation": [[13, "approximation"]], "Applying to all colors": [[13, "applying-to-all-colors"]], "Products with n-dimensional arrays": [[13, "products-with-n-dimensional-arrays"]], "Final words": [[13, "final-words"]], "X-ray image processing": [[14, "x-ray-image-processing"]], "Examine an X-ray with imageio": [[14, "examine-an-x-ray-with-imageio"]], "Combine images into a multidimensional array to demonstrate progression": [[14, "combine-images-into-a-multidimensional-array-to-demonstrate-progression"]], "Edge detection using the Laplacian-Gaussian, Gaussian gradient, Sobel, and Canny filters": [[14, "edge-detection-using-the-laplacian-gaussian-gaussian-gradient-sobel-and-canny-filters"]], "The Laplace filter with Gaussian second derivatives": [[14, "the-laplace-filter-with-gaussian-second-derivatives"]], "The Gaussian gradient magnitude method": [[14, "the-gaussian-gradient-magnitude-method"]], "The Sobel-Feldman operator (the Sobel filter)": [[14, "the-sobel-feldman-operator-the-sobel-filter"]], "The Canny filter": [[14, "the-canny-filter"]], "Apply masks to X-rays with np.where()": [[14, "apply-masks-to-x-rays-with-np-where"]], "Compare the results": [[14, "compare-the-results"]], "Contributing": [[15, "contributing"]], "Why Jupyter Notebooks?": [[15, "why-jupyter-notebooks"]], "Note": [[15, "note"]], "Adding your own tutorials": [[15, "adding-your-own-tutorials"]], "Create an issue": [[15, "create-an-issue"]], "Check out our suggested template": [[15, "check-out-our-suggested-template"]], "Upload your content": [[15, "upload-your-content"]], "NumPy Features": [[16, "numpy-features"]], "NumPy tutorials": [[17, "numpy-tutorials"]], "Non-executable articles": [[17, "non-executable-articles"]], "Useful links and resources": [[17, "useful-links-and-resources"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["applications", "articles", "content/mooreslaw-tutorial", "content/pairing", "content/save-load-arrays", "content/tutorial-air-quality-analysis", "content/tutorial-deep-learning-on-mnist", "content/tutorial-deep-reinforcement-learning-with-pong-from-pixels", "content/tutorial-ma", "content/tutorial-nlp-from-scratch", "content/tutorial-plotting-fractals", "content/tutorial-static_equilibrium", "content/tutorial-style-guide", "content/tutorial-svd", "content/tutorial-x-ray-image-processing", "contributing", "features", "index"], "filenames": ["applications.md", "articles.md", "content/mooreslaw-tutorial.md", "content/pairing.md", "content/save-load-arrays.md", "content/tutorial-air-quality-analysis.md", "content/tutorial-deep-learning-on-mnist.md", "content/tutorial-deep-reinforcement-learning-with-pong-from-pixels.md", "content/tutorial-ma.md", "content/tutorial-nlp-from-scratch.md", "content/tutorial-plotting-fractals.md", "content/tutorial-static_equilibrium.md", "content/tutorial-style-guide.md", "content/tutorial-svd.md", "content/tutorial-x-ray-image-processing.md", "contributing.md", "features.md", "index.md"], "titles": ["NumPy Applications", "Articles", "Determining Moore\u2019s Law with real data in NumPy", "Pairing Jupyter notebooks and MyST-NB", "Saving and sharing your NumPy arrays", "Analyzing the impact of the lockdown on air quality in Delhi, India", "Deep learning on MNIST", "Deep reinforcement learning with Pong from pixels", "Masked Arrays", "Sentiment Analysis on notable speeches of the last decade", "Plotting Fractals", "Determining Static Equilibrium in NumPy", "Learn to write a NumPy tutorial", "Linear algebra on n-dimensional arrays", "X-ray image processing", "Contributing", "NumPy Features", "NumPy tutorials"], "terms": {"A": [0, 1, 2, 3, 5, 8, 9, 10, 11, 12, 13, 16], "collect": [0, 1, 5, 7, 15, 16], "highlight": 0, "us": [0, 2, 3, 5, 6, 7, 9, 10, 11, 13, 15], "scienc": [0, 14], "engin": [0, 2, 7, 11], "data": [0, 1, 5, 7, 10, 12, 13, 14, 15, 17], "analysi": [0, 1, 2, 5, 8, 14, 17], "determin": [0, 6, 7, 8, 9, 17], "moor": [0, 17], "": [0, 1, 3, 6, 7, 8, 10, 13, 14, 17], "law": [0, 17], "real": [0, 5, 6, 7, 8, 9, 10, 13, 15, 17], "deep": [0, 1, 2, 14, 17], "learn": [0, 1, 14, 15, 17], "mnist": [0, 2, 9, 17], "x": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 17], "rai": [0, 2, 17], "imag": [0, 2, 7, 9, 10, 12, 13, 15, 17], "process": [0, 2, 4, 5, 6, 7, 8, 9, 11, 17], "static": [0, 3, 15, 17], "equilibrium": [0, 17], "plot": [0, 2, 6, 7, 8, 9, 11, 13, 14, 17], "fractal": [0, 2, 17], "analyz": [0, 8, 11, 14, 17], "impact": [0, 6, 17], "lockdown": [0, 17], "air": [0, 2, 17], "qualiti": [0, 2, 6, 7, 17], "delhi": [0, 17], "india": [0, 17], "want": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17], "make": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17], "valuabl": [1, 17], "contribut": [1, 17], "consid": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 17], "work": [1, 3, 4, 6, 7, 8, 9, 10, 13, 14], "so": [1, 2, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "thei": [1, 2, 3, 6, 7, 9, 10, 11, 12, 13, 14], "becom": [1, 10], "fulli": [1, 9, 17], "execut": [1, 3, 6, 9, 13], "reproduc": [1, 6, 7, 9, 17], "reinforc": [1, 2, 9, 17], "pong": [1, 2, 17], "from": [1, 2, 4, 5, 8, 10, 11, 12, 13, 14, 17], "pixel": [1, 2, 6, 13, 14, 17], "prerequisit": [1, 12], "tabl": [1, 2, 5], "content": [1, 3], "note": [1, 2, 3, 5, 6, 8, 10, 11, 12, 13, 14, 17], "rl": 1, "glossari": 1, "set": [1, 2, 3, 5, 6, 8, 9, 13, 14, 17], "up": [1, 5, 6, 8, 9, 10, 14, 15], "preprocess": 1, "frame": [1, 14], "observ": [1, 2, 5, 8, 9, 11], "creat": [1, 3, 5, 6, 8, 9, 11, 14], "polici": [1, 9], "neural": 1, "network": 1, "forward": [1, 6], "pass": [1, 5, 6, 9, 10], "updat": [1, 3, 6, 15], "step": [1, 2, 4, 5, 12, 13, 15], "backpropag": [1, 6], "defin": [1, 2, 4, 6, 9, 10, 11, 13], "discount": 1, "reward": 1, "expect": [1, 2, 6, 9, 10, 13], "return": [1, 5, 6, 8, 9, 10, 12, 14], "function": [1, 4, 5, 6, 8, 9, 10, 11, 13, 16], "train": 1, "agent": 1, "number": [1, 2, 4, 6, 8, 9, 10, 11, 13, 14], "episod": [1, 9], "next": [1, 2, 4, 5, 8, 10, 11, 12], "appendix": 1, "how": [1, 2, 3, 5, 6, 8, 10, 11, 13, 14, 15], "video": 1, "playback": 1, "your": [1, 5, 6, 8, 9, 11, 13, 14, 16, 17], "jupyt": [1, 4, 6, 9, 14, 17], "notebook": [1, 6, 9, 14, 16, 17], "sentiment": [1, 17], "notabl": [1, 7, 10, 17], "speech": [1, 17], "last": [1, 2, 6, 7, 10, 12, 13, 17], "decad": [1, 2, 17], "1": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14], "imdb": 1, "review": [1, 3, 7, 15], "dataset": [1, 4, 8, 13, 14], "load": [1, 14], "transcript": 1, "2": [1, 2, 4, 5, 7, 8, 10, 11, 13, 14], "3": [1, 2, 4, 5, 7, 8, 10, 11, 13, 14], "build": [1, 3, 7, 13, 14, 17], "model": [1, 2, 7, 8, 11], "introduct": [1, 2, 5, 8], "long": [1, 6, 7, 10, 12], "short": [1, 12], "term": [1, 2, 5, 6, 7, 13], "memori": [1, 6, 7, 8, 13, 14], "overview": 1, "architectur": [1, 13], "propag": [1, 6, 7], "But": [1, 12], "do": [1, 7, 13, 14, 15], "you": [1, 6, 7, 13, 14, 15, 17], "obtain": [1, 5, 7, 13, 14], "lstm": 1, "output": [1, 2, 3, 4, 6, 7, 8, 10, 13, 15], "paramet": [1, 2, 5, 6, 7, 8, 10, 14], "look": [1, 2, 3, 5, 6, 8, 10, 11, 13], "our": [1, 2, 5, 8, 10, 11, 13], "an": [1, 4, 5, 6, 7, 8, 10, 11, 12], "ethic": [1, 6], "perspect": 1, "The": [2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 15, 17], "report": [2, 6, 9], "per": 2, "given": [2, 5, 7, 9, 10, 11, 13], "chip": 2, "log": [2, 7, 9], "scale": [2, 6, 10], "y": [2, 5, 6, 7, 9, 10, 11, 13, 14], "axi": [2, 5, 6, 8, 9, 10, 14], "date": [2, 8], "linear": [2, 5, 6, 7, 9, 11, 16, 17], "blue": [2, 7, 10, 13], "point": [2, 4, 7, 8, 9, 11, 12, 13, 14], "ar": [2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15], "count": [2, 6, 7, 8, 10], "red": [2, 7, 13], "line": [2, 4, 7, 8, 9, 13], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "ordinari": 2, "least": [2, 9, 14], "squar": [2, 4, 6, 9, 10, 13], "predict": [2, 6, 9], "orang": [2, 8], "In": [2, 3, 4, 6, 7, 9, 11, 13, 14, 15], "1965": 2, "gordon": 2, "would": [2, 5, 6, 8, 9, 10, 11, 12, 13, 15], "doubl": [2, 6, 12], "everi": [2, 5, 7, 9, 13], "two": [2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15], "year": [2, 7], "come": [2, 7, 8, 9, 10, 11, 12, 15], "compar": [2, 3, 4, 5, 6, 13], "against": [2, 6, 7, 9], "actual": [2, 6, 7, 8, 9, 13], "53": [2, 5], "follow": [2, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "hi": [2, 7, 9], "best": [2, 7, 8, 9, 13, 15], "fit": [2, 6, 9], "constant": [2, 10], "describ": [2, 7, 8, 12], "semiconductor": 2, "perform": [2, 5, 6, 7, 9, 10, 11, 13], "regress": 2, "between": [2, 3, 4, 5, 6, 7, 9, 11, 13, 14], "npz": [2, 4], "assess": 2, "amaz": 2, "progress": 2, "have": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "made": [2, 3, 9, 10, 14], "five": [2, 6, 7, 11], "These": [2, 3, 6, 7, 9, 11, 13, 15], "packag": [2, 7, 8, 9, 12, 14], "matplotlib": [2, 6, 7, 8, 9, 10, 11, 13, 14], "import": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "command": [2, 4, 7, 8, 13], "pyplot": [2, 6, 7, 8, 9, 10, 11, 13, 14], "plt": [2, 6, 7, 8, 9, 10, 11, 13, 14], "np": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13], "sinc": [2, 5, 6, 7, 8, 9, 10, 13, 14], "thi": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "littl": [2, 10], "background": [2, 6, 7], "math": [2, 7, 9], "natur": [2, 9, 10], "loadtxt": [2, 4, 5], "text": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 15], "take": [2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "all": [2, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "element": [2, 5, 8, 10, 13], "exp": [2, 7, 9], "lambda": [2, 9, 10], "minim": [2, 6, 7], "definit": [2, 8, 10], "semilogi": 2, "onto": [2, 14], "figur": [2, 9, 10, 11, 12], "log_": 2, "10": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "ax": [2, 6, 9, 10, 13, 14], "slice": [2, 5, 13], "view": [2, 7, 9], "part": [2, 5, 7, 8, 9, 14, 17], "e": [2, 4, 5, 10, 11], "g": [2, 4, 7, 10, 11, 13], "first": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15], "boolean": [2, 8, 10, 14], "index": [2, 6, 7, 8, 9, 10, 13], "match": [2, 10, 14], "condit": [2, 7, 8, 14], "oper": [2, 6, 8, 9, 10, 11], "block": [2, 4, 9], "combin": [2, 6, 7, 8, 10], "2d": [2, 7, 13, 14], "newaxi": [2, 4], "chang": [2, 3, 6, 8, 9, 10, 14], "1d": [2, 4, 6, 7, 13], "vector": [2, 4, 5, 6, 7, 8, 9, 11, 13], "row": [2, 4, 5, 8, 13], "column": [2, 4, 5, 8, 9, 13], "savez": 2, "savetxt": 2, "save": [2, 3, 6, 7, 8, 9, 10, 14, 16, 17], "format": [2, 3, 4, 5, 7, 9, 12, 14, 15], "respect": [2, 4, 6, 7, 9, 11], "empir": 2, "assum": [2, 5, 10, 11, 12, 14], "transistor_count": 2, "f": [2, 6, 9, 10, 11, 13, 14], "cdot": [2, 5, 10], "b": [2, 7, 9, 11, 13], "where": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13], "find": [2, 5, 6, 7, 8, 14], "specifi": [2, 4, 9], "rate": [2, 6, 7, 9], "ad": [2, 7, 8, 10, 17], "give": [2, 7, 10, 11, 12, 13, 14, 15], "initi": [2, 6, 7, 8, 9], "state": [2, 7, 9, 11], "form": [2, 5, 6, 7, 9, 10, 13, 15], "a_m": 2, "b_m": 2, "start": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14], "2250": 2, "1971": 2, "dfrac": [2, 5, 10], "2a_m": 2, "rightarrow": 2, "frac": [2, 5, 9, 10, 11], "0": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "3466": 2, "675": 2, "4": [2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14], "repres": [2, 8, 9, 10, 11, 13], "python": [2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14], "moores_law": 2, "were": [2, 4, 7, 9, 10], "intel": 2, "4004": 2, "check": [2, 5, 6, 7, 8, 10, 13, 14, 17], "1973": 2, "ml_1971": 2, "ml_1973": 2, "print": [2, 3, 4, 5, 6, 7, 9, 11, 12, 14], "0f": 2, "2f": 2, "more": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "than": [2, 5, 7, 8, 9, 10, 12, 13, 14], "4500": 2, "x2": 2, "00": [2, 4, 5], "now": [2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14], "base": [2, 6, 7, 8, 9, 11], "upon": [2, 9, 10, 11], "each": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17], "transistor_data": 2, "befor": [2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "its": [2, 6, 7, 8, 9, 10, 13, 14, 15], "good": [2, 6, 8, 9, 12], "idea": [2, 8, 10, 13, 15], "inspect": [2, 6], "structur": [2, 8, 9, 11], "Then": [2, 3, 5, 6, 7, 9, 11, 14], "locat": [2, 8, 9, 10, 11], "interest": [2, 7, 8, 10, 13, 14, 15, 17], "them": [2, 5, 6, 7, 8, 9, 10, 11, 14, 17], "variabl": [2, 4, 6, 7, 8, 9], "here": [2, 3, 4, 6, 8, 9, 10, 12, 13, 15], "out": [2, 5, 6, 7, 9, 10, 12, 13, 14], "processor": 2, "mo": 2, "design": [2, 3, 6, 7, 9, 10], "mosprocess": 2, "area": [2, 10], "bit": [2, 6, 7, 9, 10, 13, 14], "16": [2, 4, 5, 6, 7, 8, 10, 14], "pin": 2, "000": [2, 6, 7, 9, 14], "nm": 2, "12": [2, 3, 5, 6, 7, 8, 13], "mm\u00b2": 2, "head": [2, 4, 5], "8008": 2, "8": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14], "18": [2, 5, 6, 7, 8], "3500": 2, "1972": [2, 7], "14": [2, 5, 6, 7, 8], "nec": 2, "\u03bccom": 2, "42": [2, 5, 7], "2500": 2, "7": [2, 4, 5, 6, 7, 8, 10, 14], "500": [2, 6, 7], "4040": 2, "3000": 2, "1974": 2, "motorola": 2, "6800": 2, "40": 2, "4100": 2, "6": [2, 3, 4, 5, 6, 7, 8, 10, 11, 14], "8080": 2, "6000": 2, "20": [2, 5, 6, 7, 8, 10, 14], "tm": 2, "1000": [2, 6, 9, 14], "28": [2, 5, 6, 8], "8000": 2, "texa": 2, "instrument": 2, "11": [2, 5, 6, 7, 8], "technologi": 2, "6502": 2, "4528": 2, "1975": 2, "21": [2, 5, 7, 8], "intersil": 2, "im6100": 2, "clone": [2, 17], "pdp": 2, "4000": 2, "don": [2, 5, 6, 7, 8, 9, 10, 12, 13, 15], "t": [2, 6, 7, 8, 9, 10, 11, 12, 13, 15], "That": [2, 8], "leav": 2, "second": [2, 7, 8, 13], "third": [2, 10], "extra": [2, 9], "option": [2, 7, 9, 12, 15], "below": [2, 5, 6, 7, 8, 9, 12, 13, 14, 15], "put": [2, 9, 10, 12], "desir": 2, "delimit": [2, 4, 5, 8, 12], "delimet": 2, "default": [2, 4, 6, 7, 9, 13], "behavior": [2, 9, 10], "usecol": [2, 5, 8], "skiprow": [2, 4, 5], "becaus": [2, 3, 6, 7, 9, 11, 12, 13, 14], "header": [2, 4, 8], "entir": [2, 10], "histori": 2, "semiconduct": 2, "name": [2, 3, 4, 6, 8, 9], "four": [2, 8, 9], "digit": [2, 6], "easier": [2, 3, 4, 10], "read": [2, 4, 6, 7, 9, 14], "manag": [2, 9], "assign": [2, 4, 6, 7, 12, 13], "correct": [2, 5, 7, 9], "grab": 2, "tran": 2, "cnt": 2, "5000": 2, "independ": 2, "depend": [2, 6, 7, 9, 13, 15], "transform": [2, 6, 9, 13], "y_i": 2, "equat": [2, 10, 11], "yi": 2, "differ": [2, 3, 5, 6, 7, 8, 9, 10, 13, 14], "min": [2, 9, 13, 14], "sum": [2, 6, 7, 8, 9], "_i": 2, "error": [2, 6, 7, 9, 10, 13], "can": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17], "succinctli": 2, "mathbf": 2, "z": [2, 9, 10, 11], "polynomi": [2, 8, 10], "By": [2, 5], "regressor": 2, "matrix": [2, 6, 7, 9, 11, 13], "statist": [2, 7, 14], "degre": [2, 5, 10], "therefor": [2, 6, 7, 9, 11], "we": [2, 3, 5, 6, 8, 9, 10, 13, 15], "deg": [2, 8, 10], "domain": 2, "case": [2, 5, 8, 9, 10, 11, 12, 13], "coeffici": 2, "unscal": 2, "unshift": 2, "recov": [2, 13], "convert": [2, 3, 7, 9, 11, 13], "method": [2, 5, 6, 7, 8, 9, 11, 13], "mapsto": [2, 10], "666": 2, "32640635": 2, "34163208": 2, "individu": [2, 6, 9, 10, 11, 13, 17], "did": [2, 4, 9, 10, 13], "final": [2, 6, 7, 8, 9, 10, 14], "formula": [2, 5, 9, 13, 14], "xfactor": 2, "2a": 2, "increas": [2, 6, 7, 9, 10], "slope": 2, "semilog": 2, "98": [2, 5], "factor": [2, 6, 7, 9], "three": [2, 3, 4, 8, 10, 11, 12, 13, 14], "get": [2, 5, 6, 7, 8, 9, 10, 12, 13], "same": [2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14], "dimens": [2, 6, 7, 9, 10, 11, 13, 14], "179": 2, "_": 2, "Be": [2, 12, 13], "fivethirtyeight": 2, "style": [2, 4, 7, 8], "sheet": 2, "replic": 2, "http": [2, 6, 7, 8, 9, 13], "com": [2, 6, 9, 13], "transistor_count_predict": 2, "transistor_moores_law": 2, "label": [2, 4, 7, 9, 10, 11, 17], "titl": [2, 6, 8, 9, 10, 14], "microprocessor": 2, "n": [2, 3, 5, 6, 7, 8, 9, 10, 14, 16, 17], "wa": [2, 5, 6, 7, 8, 9, 10, 11, 13], "higher": [2, 4, 6, 7, 9, 10, 12], "xlabel": 2, "introduc": [2, 6, 7, 9], "legend": [2, 6, 8, 9, 11], "loc": [2, 9], "center": [2, 11], "left": [2, 5, 6, 7, 9, 11], "bbox_to_anchor": [2, 9], "5": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "ylabel": 2, "nper": 2, "scatter": [2, 10], "captur": 2, "2015": [2, 6, 7], "claim": 2, "could": [2, 7, 9, 10, 13], "keep": [2, 3, 8, 9, 10, 11, 12, 13], "anymor": 2, "show": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "averag": [2, 9, 14], "x1": 2, "2017": [2, 7, 14], "abov": [2, 5, 6, 7, 9, 10, 11, 12, 13, 17], "plug": [2, 10], "great": [2, 6, 7, 9], "wai": [2, 4, 6, 7, 9, 10, 12, 13, 17], "measur": [2, 5, 6, 7, 9, 11, 12, 14], "rang": [2, 5, 6, 7, 8, 9, 10, 13, 14], "alpha": [2, 5, 10], "transpar": [2, 9], "opaqu": 2, "appear": [2, 7, 10, 12, 17], "lie": 2, "green": [2, 7, 13], "pm": [2, 5], "transistor_count2017": 2, "max": [2, 5, 13, 14], "mean": [2, 3, 7, 8, 9, 10, 11, 13, 14], "linspac": [2, 10], "2016": [2, 7], "your_model2017": 2, "moore_model2017": 2, "ones": [2, 5, 7, 8, 9, 10, 11, 14], "ro": 2, "markers": 2, "mew": 2, "19200000000": 2, "250000000": 2, "7050000000": 2, "0x7f87900fe950": 2, "close": [2, 7, 8, 9, 10, 12, 13], "closer": 2, "maximum": [2, 5, 6, 7, 13, 14], "produc": [2, 6, 11, 14, 15], "even": [2, 5, 7, 9, 10, 12, 13, 15], "though": [2, 5, 13], "thought": [2, 9], "slow": [2, 7], "onc": [2, 3, 9, 10, 13], "again": [2, 4, 6, 7, 9, 10, 13, 15], "approach": [2, 7, 9], "2025": 2, "still": [2, 4, 7, 8, 13], "nearli": [2, 10], "much": [2, 3, 4, 5, 6, 7, 9, 10, 13, 15], "better": [2, 4, 6, 8, 9, 10, 11, 13], "extrem": [2, 9, 10], "satisfi": 2, "new": [2, 4, 6, 7, 8, 9, 12, 14, 15], "other": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "session": [2, 3], "origin": [2, 5, 6, 7, 8, 9, 10, 11, 13, 14], "thousand": 2, "back": [2, 5, 6, 7, 9, 10, 13], "dictionari": [2, 4, 6, 7, 9, 13], "user": [2, 9, 12, 13, 15], "add": [2, 6, 7, 9, 10, 11, 13, 15], "one": [2, 4, 5, 7, 9, 10, 11, 12, 13, 14], "understand": [2, 5, 8, 9, 10, 11, 13], "includ": [2, 3, 4, 7, 8, 9, 12, 13, 15], "nyear": 2, "regression_cst": 2, "33": [2, 5, 8], "34": [2, 5], "38": [2, 6], "35": [2, 5, 7, 8], "mooreslaw_regress": 2, "3264063536233": 2, "l": [2, 9, 11], "mooreslaw": 2, "tutori": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "md": [2, 13, 15, 17], "pair": [2, 10, 15], "_static": 2, "text_preprocess": 2, "py": [2, 3, 4, 7], "ma": [2, 8], "nlp": [2, 9], "scratch": [2, 7, 9], "static_equilibrium": 2, "guid": [2, 3, 7, 8], "svd": [2, 13], "who_covid_19_sit_rep_time_seri": [2, 8], "x_y": [2, 4], "benefit": [2, 3, 6], "hundr": [2, 7], "shape": [2, 4, 5, 6, 7, 8, 9, 10, 14], "type": [2, 5, 6, 7, 8, 10, 13, 14], "precis": [2, 6], "float": [2, 4, 5, 7, 9, 13, 14], "prefer": [2, 5, 7, 13], "anoth": [2, 7, 10, 12, 14], "If": [2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "limit": [2, 6, 7, 9], "like": [2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 15], "prepar": [2, 6, 9, 14], "export": 2, "whose": [2, 9], "contain": [2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14], "inform": [2, 6, 7, 8, 9, 10, 12, 13, 15], "singl": [2, 5, 7, 8, 11, 12], "tabular": 2, "inher": [2, 9], "dimension": [2, 4, 6, 7, 9, 11, 14, 16, 17], "organ": [2, 8, 13], "through": [2, 7, 8, 9, 10, 11, 13, 14], "fourth": [2, 8], "append": [2, 4, 6, 7, 9], "togeth": [2, 4, 9, 10, 11], "larger": [2, 6, 10, 11], "arrang": [2, 4], "write": [2, 4, 5, 6, 9, 10, 11, 14, 15], "971000000000000000e": 2, "03": [2, 5], "250000000000000000e": 2, "130514785642591278e": 2, "249999999999916326e": 2, "972000000000000000e": 2, "500000000000000000e": [2, 4], "590908400344571419e": 2, "181980515339620069e": 2, "973000000000000000e": 2, "238793840142739100e": 2, "500000000000097316e": 2, "conclus": [2, 4, 9, 11], "ha": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "maintain": [2, 15], "consist": [2, 10, 11, 13, 15], "time": [2, 3, 5, 6, 7, 8, 9, 10, 11], "01": [2, 4, 5, 7, 9], "2019": [2, 5, 7], "revis": 2, "sai": [2, 10, 11, 13], "should": [2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15], "hold": [2, 11], "until": [2, 7, 9], "enabl": [2, 7], "industri": [2, 14], "comput": [2, 5, 6, 7, 8, 9, 10, 11, 13, 14], "power": [2, 3, 6, 7, 9, 10, 15], "small": [2, 8, 9, 10, 13, 14], "insight": [2, 10], "incred": 2, "been": [2, 7, 8, 9, 14], "over": [2, 5, 6, 7, 8, 9, 10, 14], "half": 2, "centuri": 2, "wikipedia": [2, 10], "articl": [2, 6, 7, 9], "access": [2, 4, 8, 10, 13, 15], "oct": 2, "2020": [2, 5, 7, 8], "04": [2, 5, 10], "19": [2, 5, 6, 7], "cram": 2, "compon": [2, 9, 11, 13, 14], "integr": 2, "circuit": 2, "electron": [2, 7], "magazin": 2, "retriev": [2, 9, 14], "april": 2, "courtland": 2, "rachel": [2, 6, 9], "man": 2, "ieee": 2, "spectrum": 2, "30": [2, 5, 14], "mar": 2, "sync": [3, 15], "json": 3, "markdown": [3, 12, 15], "drawback": 3, "numpi": [3, 5, 7, 8, 9, 10, 13, 14, 15], "store": [3, 5, 6, 7, 9], "disk": [3, 7], "veri": [3, 6, 7, 8, 9, 10, 13, 14, 15], "allow": [3, 9, 10, 15], "almost": 3, "ani": [3, 4, 5, 7, 8, 9, 11, 12], "input": [3, 5, 6, 7, 9, 10, 12, 13], "librari": [3, 4, 5, 6, 7, 11, 13], "hard": [3, 10], "see": [3, 4, 5, 6, 9, 10, 11, 13, 15, 17], "when": [3, 4, 6, 7, 9, 10, 11, 13, 14], "pull": [3, 15], "request": [3, 6, 15], "onli": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "raw": [3, 13, 14], "lightweight": 3, "markup": 3, "languag": [3, 7, 9, 15], "Its": 3, "kei": [3, 4, 5, 6, 9], "goal": [3, 6, 7, 10, 11, 17], "readabl": [3, 8], "code": [3, 6, 7, 8, 9, 10, 13, 17], "open": [3, 4, 6, 7, 9, 12, 15, 17], "must": [3, 11, 13], "common": [3, 7, 9, 13, 15], "mark": [3, 9], "cell": [3, 6, 7, 9, 12, 13, 14, 15], "render": [3, 7, 15], "support": [3, 5, 6, 7, 9, 13], "varieti": 3, "restructur": [3, 17], "direct": [3, 7, 9, 11, 12], "sphinx": 3, "built": [3, 6, 7, 9, 10, 13, 16], "websit": [3, 6, 9, 12, 15], "local": [3, 6, 7, 9, 14, 17], "binder": [3, 7, 15, 17], "version": [3, 5, 8, 10, 13, 17], "simpl": [3, 5, 6, 7, 8, 9, 10, 11, 14], "exampl": [3, 6, 7, 8, 9, 10, 13, 14], "thing": [3, 4, 9, 10, 12], "explain": [3, 7, 10, 12], "calcul": [3, 7, 8, 9, 10, 11, 14], "side": 3, "cell_typ": 3, "metadata": 3, "sourc": [3, 7, 9, 11, 15, 17], "execution_count": 3, "stdout": 3, "output_typ": 3, "stream": [3, 6], "kernelspec": 3, "display_nam": 3, "python3": 3, "language_info": 3, "codemirror_mod": 3, "ipython": [3, 4, 7, 12, 13], "file_extens": 3, "mimetyp": 3, "nbconvert_export": 3, "pygments_lex": 3, "ipython3": 3, "nbformat": 3, "nbformat_minor": 3, "text_represent": 3, "extens": [3, 9], "format_nam": 3, "format_vers": 3, "jupytext_vers": 3, "shorter": [3, 7], "doe": [3, 5, 6, 8, 9, 10, 11, 13], "submit": 3, "also": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17], "To": [3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 17], "instal": [3, 5, 7, 13], "pip": [3, 7], "conda": [3, 6, 7, 9, 14], "c": [3, 9, 10, 11, 13], "forg": 3, "lab": 3, "browser": 3, "launch": [3, 15, 17], "ask": [3, 9], "rebuild": [3, 13], "either": [3, 8, 9, 17], "With": [3, 5, 6, 7, 10], "interfac": [3, 7], "automat": [3, 6, 7, 8, 9], "right": [3, 6, 7, 8, 9, 10, 11, 12, 13, 17], "click": [3, 17], "choos": [3, 5, 6, 7, 8, 9, 10, 13], "saw": [3, 10], "both": [3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 17], "editor": [3, 4], "vim": 3, "emac": 3, "continu": 3, "handl": [3, 6, 8, 9], "zip": [4, 6, 9, 10, 14], "comma": [4, 12], "workspac": 4, "compress": [4, 13], "serv": [4, 14], "most": [4, 5, 6, 7, 8, 9, 12, 13], "storag": 4, "binari": [4, 9, 10], "finish": [4, 6, 7, 9], "skill": [4, 12], "directori": [4, 7, 9, 15], "necessari": [4, 5, 7, 9, 10], "magic": 4, "arang": [4, 6, 8], "del": 4, "who": [4, 6, 7, 9, 12, 13, 15], "coupl": [4, 10], "let": [4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "integ": [4, 6, 7, 8, 10, 13, 14], "9": [4, 5, 6, 7, 8, 9, 10, 14], "25": [4, 5, 8, 9], "36": 4, "49": [4, 5], "64": [4, 5, 9], "81": [4, 5], "x_axi": [4, 9], "y_axi": 4, "current": [4, 7, 8, 9, 10], "clear": [4, 8, 12, 15], "valu": [4, 6, 7, 8, 9, 10, 13, 14], "npy": [4, 9], "nativ": [4, 12], "cannot": [4, 8, 9], "standard": [4, 5, 6, 7, 8, 9, 12, 14], "spreadsheet": 4, "workspaec": 4, "info": [4, 7, 8], "modul": [4, 5, 6, 7, 8, 9, 12, 13, 14], "ho": 4, "kage": 4, "__init__": 4, "load_xi": 4, "ve": [4, 9, 14], "delet": [4, 8], "nice": 4, "scenario": [4, 9], "peopl": [4, 9, 13, 15], "program": [4, 9, 10], "mai": [4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17], "separ": [4, 7, 8, 13], "result": [4, 5, 6, 9, 10, 11, 13], "compos": [4, 10], "ascii": [4, 7], "charact": [4, 8, 9], "filetyp": 4, "complex": [4, 7, 9, 10], "multipl": [4, 5, 6, 7, 9, 10, 13], "forc": [4, 7, 9, 11], "array_out": 4, "tell": [4, 5, 7, 12], "place": [4, 6, 9, 10, 12], "000000000000000000e": 4, "600000000000000000e": 4, "900000000000000000e": 4, "400000000000000000e": 4, "100000000000000000e": 4, "There": [4, 5, 7, 8, 9, 11], "featur": [4, 6, 9, 10, 13, 14, 17], "shoud": 4, "notic": [4, 7, 13, 15], "ignor": [4, 9], "re": [4, 7, 8, 9, 12, 14, 17], "skip": [4, 8, 9, 13], "number_of_header_lin": 4, "written": [4, 7, 10], "scientif": [4, 15], "notat": [4, 6, 10], "fmt": 4, "gener": [4, 5, 6, 7, 8, 9, 11, 12, 13], "preserv": [4, 8, 9], "int": [4, 6, 9], "y_squar": 4, "dtype": [4, 5, 6, 8, 10, 13, 14], "float64": [4, 6, 13, 14], "collabor": 4, "pickl": [4, 6], "futur": 4, "miss": [4, 5, 7], "genfromtext": 4, "about": [4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15], "io": [4, 7, 8, 9], "concept": [5, 6, 7, 9, 11], "interpret": [5, 14], "scipi": [5, 13, 14], "environ": [5, 6, 7, 9, 14, 15], "basic": [5, 6, 8, 9, 10, 13, 14], "popul": [5, 9], "deviat": [5, 7, 14], "etc": [5, 10], "promin": 5, "face": [5, 13], "immedi": 5, "effect": 5, "daili": [5, 9], "live": [5, 9, 10, 17], "covid": 5, "pandem": 5, "world": [5, 6, 7, 9, 13], "offer": [5, 7, 12], "rare": 5, "opportun": 5, "studi": 5, "human": [5, 7, 9], "activ": [5, 6, 7, 9], "lack": [5, 9], "thereof": 5, "worst": 5, "affect": [5, 6, 9, 14], "citi": 5, "dure": [5, 6, 7, 9, 12], "march": 5, "june": 5, "For": [5, 6, 7, 8, 9, 10, 13, 14, 15], "hour": [5, 7], "It": [5, 6, 7, 8, 9, 10, 11, 13, 14], "u": [5, 10, 11, 13, 14], "improv": [5, 7, 9], "due": [5, 7, 9, 11, 13], "intuit": [5, 10], "random": [5, 6, 7, 9], "default_rng": [5, 6, 7, 9], "stat": 5, "condens": 5, "hourli": 5, "level": [5, 6, 7, 9, 10, 12, 13], "variou": [5, 6, 7, 9, 10, 14], "station": 5, "across": [5, 9, 13], "avail": [5, 7, 8, 15], "31": [5, 8], "requir": [5, 7, 10, 11, 12], "few": [5, 6, 7, 8, 9], "particul": 5, "matter": 5, "nitrogen": 5, "dioxid": 5, "no2": 5, "ammonia": 5, "nh3": 5, "sulfur": 5, "so2": 5, "carbon": 5, "monoxid": 5, "co": [5, 9, 10], "ozon": 5, "o3": 5, "oxid": 5, "nox": 5, "nitric": 5, "NO": 5, "benzen": 5, "toluen": 5, "xylen": 5, "glimps": 5, "csv": [5, 8, 9], "datetim": 5, "pm2": 5, "pm10": 5, "05": [5, 14], "103": 5, "26": [5, 8], "305": 5, "46": 5, "94": [5, 13], "71": 5, "43": 5, "06": 5, "178": 5, "152": 5, "73": [5, 13], "13": [5, 6, 7, 8], "65": 5, "83": 5, "47": 5, "54": 5, "104": 5, "309": [5, 8], "74": 5, "66": 5, "08": 5, "27": [5, 6, 8], "02": 5, "69": 5, "106": [5, 11], "79": 5, "76": 5, "91": 5, "90": [5, 14], "314": 5, "48": [5, 6], "32": [5, 14], "45": 5, "59": [5, 6], "78": 5, "356": 5, "44": [5, 17], "22": [5, 6, 8], "41": [5, 10], "80": [5, 7], "372": 5, "23": [5, 8], "68": [5, 6], "92": 5, "15": [5, 6, 7, 8, 10, 13, 14], "39": 5, "62": [5, 6], "389": 5, "97": [5, 6, 13], "17": [5, 6, 7, 8], "56": [5, 10], "371": 5, "61": 5, "87": [5, 13], "84": 5, "29": [5, 8], "24": [5, 8], "37": 5, "07": 5, "77": 5, "361": 5, "88": 5, "63": 5, "86": 5, "96": 5, "377": 5, "purpos": [5, 6, 7, 11], "concern": [5, 9], "viz": 5, "particular": [5, 8, 9, 10, 13, 14], "pollutants_a": 5, "pollutants_b": 5, "slightli": [5, 10, 11, 13], "later": [5, 6, 8, 9], "pollutant_data": 5, "9528": 5, "might": [5, 8, 13, 15], "denot": [5, 10, 11], "nan": [5, 8], "quick": [5, 7, 10], "isfinit": 5, "true": [5, 6, 7, 8, 9, 13, 14], "successfulli": 5, "complet": [5, 6, 7, 10, 12], "adopt": [5, 9], "central": 5, "control": [5, 6, 7, 9], "board": 5, "summar": [5, 6, 8, 9], "concentr": 5, "ip": 5, "ihi": 5, "ilo": 5, "bphi": 5, "bplo": 5, "cp": 5, "breakpoint": 5, "greater": [5, 9, 14], "equal": 5, "less": [5, 10, 11, 13, 14], "correspond": [5, 6, 8, 9, 10, 11, 13, 14], "help": [5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "shown": [5, 6, 9, 12], "chart": 5, "arrai": [5, 6, 7, 9, 10, 11, 12, 16, 17], "51": 5, "101": 5, "201": 5, "301": 5, "401": 5, "501": 5, "121": [5, 13], "251": 5, "351": 5, "431": 5, "181": 5, "281": 5, "801": [5, 6], "1201": 5, "1801": 5, "381": 5, "1601": 5, "169": 5, "209": 5, "749": 5, "window": 5, "moving_mean": 5, "cumsum": 5, "achiev": 5, "sure": [5, 7, 8, 9, 12, 13, 15], "length": [5, 9, 11], "truncat": 5, "pollutants_b_8hr_avg": 5, "accord": [5, 7, 13], "pollutants_a_24hr_avg": 5, "ensur": [5, 6, 8, 9], "period": [5, 8], "def": [5, 6, 7, 9, 10], "ret": 5, "join": [5, 6, 8, 9, 14], "concaten": [5, 9], "wise": [5, 9], "subindic": 5, "relationship": [5, 6, 7], "compute_indic": 5, "fetch": [5, 9], "upper": [5, 9, 17], "lower": [5, 6, 9], "bound": [5, 10], "categori": [5, 9], "feed": [5, 6, 7], "pol": 5, "con": 5, "bp": 5, "inc": 5, "els": [5, 7, 11], "bl": 5, "bh": 5, "ih": 5, "il": 5, "elif": 5, "util": [5, 6, 7, 9, 11, 13], "simpli": [5, 14], "loop": [5, 6, 7, 9, 10, 13], "ourselv": [5, 8, 9, 10], "advantag": [5, 7, 10], "vcompute_indic": 5, "call": [5, 6, 7, 8, 9, 10, 12, 14], "stack": [5, 9, 13, 14], "sub_indic": 5, "which": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "aqi_arrai": 5, "31st": 5, "descript": 5, "decis": [5, 9, 10], "signific": [5, 7, 10], "after": [5, 6, 7, 8, 9, 10, 13, 14], "impos": 5, "tail": 5, "critic": [5, 7, 9], "datetime64": 5, "subset": [5, 6, 8, 10], "m8": 5, "h": [5, 7, 10, 13], "total": [5, 6, 7, 8, 9, 10], "commenc": [5, 9], "24th": [5, 8], "after_lock": 5, "24t00": 5, "before_lock": 5, "21t00": 5, "2376": 5, "approxim": [5, 7, 8, 10], "normal": [5, 6, 7, 9, 10, 11, 13, 14], "distribut": [5, 6, 7, 14], "size": [5, 6, 7, 9, 10, 13], "before_sampl": 5, "after_sampl": 5, "drawn": [5, 6, 9], "choic": [5, 6, 7, 9, 10, 12, 15], "rng": [5, 6, 7, 9], "replac": [5, 6, 8, 9, 12], "fals": [5, 6, 7, 8, 9, 14], "null": [5, 7], "altern": [5, 12, 13], "mathemat": [5, 9, 10], "h_": [5, 9], "mu_": 5, "evalu": [5, 6, 9], "sqrt": [5, 7, 9], "sigma": [5, 13, 14], "varianc": [5, 7], "t_test": 5, "diff": 5, "var": 5, "ddof": 5, "num": 5, "denom": 5, "len": [5, 6, 7, 8, 9], "divid": [5, 6, 10, 13], "t_valu": 5, "cdf": 5, "argument": [5, 8], "freedom": 5, "dof": 5, "p_valu": 5, "836332143875384": 5, "071929048036322e": 5, "09": 5, "699": 5, "confid": 5, "95": [5, 13], "clearli": 5, "safe": 5, "reject": 5, "usual": [5, 6, 7, 12, 14, 15], "chosen": [5, 6, 9, 12], "accept": [5, 9, 15], "enough": [5, 10, 12], "evid": 5, "word": [5, 7, 9, 12], "fail": 5, "panda": [5, 9], "seri": 5, "provid": [5, 6, 7, 8, 9, 12, 14, 17], "ttest_rel": 5, "life": [5, 9, 15], "non": [5, 6, 7, 9, 13], "wilcoxon": 5, "host": [5, 14, 15], "characterist": [5, 9], "gentl": 5, "demonstr": [6, 7, 9, 11, 12], "feedforward": [6, 7], "hidden": [6, 7, 9], "layer": [6, 7, 9], "recogn": 6, "handwritten": 6, "artifici": [6, 7, 9], "resembl": 6, "multi": [6, 9, 14], "perceptron": [6, 9], "classifi": [6, 9], "60": [6, 10], "784": 6, "28x28": 6, "supervis": [6, 7, 9], "revers": [6, 7, 9], "mode": [6, 7], "differenti": [6, 7, 9], "score": 6, "adapt": [6, 7, 13], "andrew": [6, 7, 9], "trask": 6, "author": [6, 9], "permiss": 6, "reader": [6, 7, 9, 12, 14], "some": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "knowledg": [6, 7, 10, 14], "manipul": [6, 7, 9, 11, 13, 14], "algebra": [6, 7, 9, 11, 16, 17], "addit": [6, 7, 9, 12, 14], "familiar": [6, 7, 8, 9, 10, 12], "main": [6, 7, 12, 13, 15, 17], "refresh": [6, 8, 9, 13, 14], "advis": 6, "paper": [6, 7, 14], "publish": [6, 7, 14], "yann": [6, 7], "lecun": [6, 7], "yoshua": [6, 7], "bengio": [6, 7], "geoffrei": [6, 7], "hinton": [6, 7], "regard": [6, 7], "pioneer": [6, 7], "field": [6, 7], "grokk": 6, "teach": [6, 12, 17], "urllib": 6, "url": [6, 9], "gzip": 6, "file": [6, 7, 8, 9, 12, 13, 14, 15, 17], "decompress": 6, "well": [6, 7, 9, 11, 12, 14], "visual": [6, 7, 9, 10, 11, 14], "run": [6, 7, 8, 9, 12, 13, 14], "isol": [6, 7, 9, 11, 14], "virtualenv": [6, 7, 9, 14], "jupyterlab": [6, 7, 9, 14], "forget": [6, 9], "section": [6, 7, 9, 10, 12, 17], "download": [6, 8, 9, 13, 14, 17], "split": [6, 9], "list": [6, 7, 9, 10, 12], "data_sourc": 6, "training_imag": 6, "idx3": 6, "ubyt": 6, "gz": 6, "test_imag": 6, "t10k": 6, "training_label": 6, "idx1": 6, "test_label": 6, "o": [6, 8, 9, 12, 14], "data_dir": 6, "_data": 6, "makedir": 6, "exist_ok": 6, "base_url": [6, 9], "github": [6, 7, 9, 15], "rossbar": 6, "mirror": 6, "blob": 6, "fname": 6, "fpath": 6, "path": [6, 8, 9, 14], "exist": [6, 11, 13, 15, 17], "resp": 6, "request_opt": 6, "raise_for_statu": 6, "succes": 6, "wb": 6, "fh": [6, 9], "chunk": 6, "iter_cont": 6, "chunk_siz": 6, "128": 6, "ndarrai": [6, 8, 13, 14], "need": [6, 7, 9, 13, 14], "reshap": [6, 7, 9], "multipli": [6, 7, 11, 13], "mnist_dataset": 6, "rb": [6, 9], "mnist_fil": 6, "frombuff": 6, "uint8": [6, 7, 13, 14], "offset": 6, "x_train": [6, 9], "x_test": [6, 9], "y_train": [6, 9], "y_test": [6, 9], "confirm": 6, "60000": 6, "10000": [6, 8], "And": [6, 7], "000th": 6, "999": [6, 9], "valid": [6, 8, 9, 13], "displai": [6, 7, 13, 14], "mnist_imag": 6, "59999": 6, "color": [6, 7, 8, 10, 11, 14], "map": [6, 7, 9, 10, 14], "grayscal": [6, 7, 13, 14], "black": 6, "imshow": [6, 7, 10, 13, 14], "cmap": [6, 7, 10, 13, 14], "grai": [6, 7, 13, 14], "num_exampl": 6, "seed": [6, 7], "147197952744": 6, "fig": [6, 9, 10, 11, 14], "subplot": [6, 10, 14], "sampl": [6, 7, 9, 14], "taken": [6, 9], "hand": [6, 10, 12], "arab": 6, "numer": [6, 7, 8, 9], "exact": 6, "randomli": [6, 7, 9], "quit": [6, 7, 10], "198": 6, "243": 6, "254": 6, "212": 6, "tensor": [6, 7], "multidimension": [6, 7], "convers": 6, "alreadi": [6, 9, 10], "challeng": [6, 7, 14], "procedur": [6, 10], "speed": [6, 7], "One": [6, 7, 8, 10], "practic": [6, 7, 9, 13], "nvidia": 6, "googl": [6, 7], "cloud": [6, 7, 10], "blog": [6, 7, 9, 17], "post": [6, 7, 9, 17], "255": [6, 13, 14], "interv": 6, "thu": [6, 12], "promot": 6, "train_label": 6, "reduc": [6, 7, 10], "training_sampl": 6, "test_sampl": 6, "success": [6, 7, 9], "01176471": 6, "07058824": 6, "49411765": 6, "53333333": 6, "68627451": 6, "10196078": 6, "65098039": 6, "96862745": 6, "49803922": 6, "emb": 6, "zero": [6, 7, 9, 10, 11, 12, 13], "As": [6, 8, 10, 11, 12, 13, 14], "posit": [6, 7, 9, 10], "similar": [6, 7, 9, 10, 11, 14], "one_hot_encod": 6, "one_hot_label": 6, "none": [6, 7, 9], "astyp": [6, 7, 14], "examin": [6, 8], "yourself": [6, 9, 12], "high": [6, 7, 9, 14, 17], "refer": [6, 7, 9, 12, 13, 14], "research": [6, 7, 9, 10, 14], "public": [6, 9, 14], "afterward": [6, 9], "construct": [6, 9], "identifi": [6, 8, 9, 14], "certain": [6, 7, 9, 10, 11, 14], "accuraci": [6, 9], "filter": [6, 8], "represent": [6, 9], "target": [6, 9], "gradient": [6, 7, 9], "deriv": [6, 9, 10], "loss": [6, 7, 9], "backward": [6, 7, 9], "middl": 6, "weight": [6, 7, 9], "dot": [6, 7, 9, 13], "simplic": [6, 7, 9, 14], "bia": [6, 9], "omit": 6, "adjust": [6, 7, 10], "fine": [6, 7, 8, 9, 12], "tune": [6, 7, 9], "optim": [6, 7, 9, 11], "descent": [6, 7, 9], "highest": 6, "lowest": 6, "capabl": [6, 9], "appli": [6, 7, 8, 9, 10, 11], "rectifi": [6, 7], "unit": [6, 7, 9, 11], "relu": [6, 7], "regular": [6, 8, 9, 17], "techniqu": [6, 7, 9, 14], "prevent": [6, 7, 9], "overfit": [6, 9], "dropout": 6, "dilut": 6, "truth": [6, 9], "final_layer_output": 6, "image_label": 6, "metric": 6, "abil": [6, 9], "hasn": 6, "seen": [6, 9, 11], "previous": [6, 7, 10], "layer_0": 6, "layer_1": 6, "previou": [6, 7, 9, 13], "weights_1": 6, "layer_2": 6, "ingest": 6, "repeat": [6, 7, 13], "weights_2": 6, "end": [6, 7, 9, 11, 12, 14], "signal": [6, 7], "technic": 6, "matric": [6, 11, 13, 14], "chain": [6, 9], "rule": [6, 7, 9, 13], "iter": [6, 9, 10, 12], "epoch": [6, 9], "cycl": [6, 9, 10], "reflect": [6, 9, 12], "maxim": [6, 7], "cover": [6, 7, 8, 15], "ll": [6, 7, 9, 13, 14, 15], "884736743": 6, "otherwis": [6, 7, 10, 11, 13, 14, 15], "relu2deriv": 6, "hyperparamet": [6, 9], "learning_r": [6, 7, 9], "magnitud": [6, 7, 11], "overcorrect": [6, 7], "neg": [6, 7, 8, 9, 13], "longer": [6, 7, 9], "computation": 6, "intens": [6, 13, 14], "task": [6, 7], "low": [6, 14], "meaning": 6, "hidden_s": 6, "pixels_per_imag": 6, "establish": [6, 9], "num_label": 6, "indic": [6, 7, 8, 9, 13], "occur": [6, 9], "005": 6, "100": [6, 7, 9, 10, 12, 14], "experi": [6, 7, 9, 10, 11, 13], "track": [6, 8, 10], "accur": [6, 9], "store_training_loss": 6, "store_training_accurate_pr": 6, "store_test_loss": 6, "store_test_accurate_pr": 6, "j": [6, 10, 13], "training_loss": [6, 9], "training_accurate_predict": 6, "accordingli": 6, "dropout_mask": 6, "increment": 6, "argmax": 6, "layer_2_delta": 6, "layer_1_delta": 6, "outer": [6, 7], "unlik": [6, 7, 9, 12], "modifi": [6, 8, 9], "batch": [6, 7, 9, 14], "manner": 6, "elimin": [6, 8, 13], "test_loss": 6, "test_accurate_predict": 6, "3f": 6, "898": 6, "397": 6, "680": 6, "582": 6, "656": 6, "633": 6, "607": 6, "641": 6, "592": 6, "569": 6, "679": 6, "556": [6, 8], "541": 6, "708": 6, "534": [6, 8], "732": 6, "526": 6, "729": 6, "515": 6, "715": 6, "739": 6, "495": 6, "748": 6, "487": 6, "753": 6, "483": 6, "769": 6, "486": 6, "747": 6, "473": 6, "776": 6, "752": 6, "460": 6, "788": 6, "462": 6, "762": 6, "465": 6, "767": 6, "443": 6, "456": 6, "775": 6, "448": 6, "795": 6, "455": 6, "772": 6, "438": 6, "787": 6, "453": 6, "778": 6, "446": [6, 8], "791": 6, "450": 6, "779": 6, "441": 6, "452": 6, "437": 6, "786": 6, "436": 6, "794": 6, "449": 6, "433": 6, "774": 6, "429": 6, "785": 6, "mani": [6, 7, 8, 9, 10, 12, 13, 14], "minut": [6, 9], "machin": [6, 7, 9, 12, 14], "wait": [6, 15], "reset": [6, 7], "runtim": 6, "instanc": [6, 7, 9], "epoch_rang": 6, "training_metr": 6, "asarrai": 6, "test_metr": 6, "nrow": [6, 14], "ncol": [6, 14], "figsiz": [6, 10, 14], "item": [6, 7, 9], "capit": [6, 12], "set_titl": [6, 10, 14], "set_xlabel": [6, 9, 10], "decreas": 6, "reach": [6, 7], "somewhat": 6, "plausibl": 6, "cross": [6, 7, 11, 12], "entropi": [6, 7], "possibl": [6, 7, 8, 13, 15], "solut": [6, 7, 8, 9], "discuss": [6, 7, 9], "just": [6, 8, 9, 10, 11, 12, 13, 14], "further": [6, 7, 9], "enhanc": [6, 7, 9], "mixtur": [6, 9], "mini": 6, "alter": [6, 9], "deeper": [6, 9], "softmax": [6, 7], "convolut": [6, 7, 14], "earli": [6, 9], "stop": [6, 7, 9, 10], "unbias": [6, 9], "valuat": 6, "faster": [6, 9, 10], "stabl": [6, 9, 11], "howev": [6, 7, 8, 9, 11, 13], "applic": [6, 7, 8, 9, 13, 15, 17], "special": [6, 7, 9, 13], "framework": [6, 7, 9, 12], "pytorch": [6, 7, 9], "jax": [6, 7, 9], "tensorflow": [6, 7, 9], "mxnet": [6, 7, 9], "api": [6, 7, 9, 10], "gpu": [6, 7, 9], "develop": [6, 7, 9, 12, 17], "think": [6, 8], "potenti": 6, "issu": [6, 7, 8, 9, 17], "avoid": [6, 8], "mitig": [6, 9], "those": [6, 8, 9, 11, 13, 14], "document": [6, 7, 8, 12, 13, 15, 17], "card": 6, "margaret": 6, "mitchel": 6, "et": [6, 7], "al": [6, 7], "datasheet": 6, "timnit": 6, "gebru": 6, "talk": [6, 9], "pratyusha": [6, 9], "kalluri": [6, 9], "resourc": [6, 9], "thoma": [6, 9], "radic": [6, 9], "ai": [6, 7, 9], "podcast": [6, 9], "credit": [6, 12], "hsjeong5": 6, "without": [6, 8, 9, 10, 11, 13], "extern": 6, "test": [7, 9, 13], "licens": [7, 12, 15], "underli": [7, 9], "gym": 7, "atari": 7, "footprint": 7, "implement": [7, 8, 9, 14], "plai": [7, 9, 10], "game": 7, "screen": [7, 14], "go": [7, 8, 9, 10, 12, 13, 15], "player": 7, "racket": 7, "tenni": 7, "move": [7, 9, 11], "down": [7, 8, 9, 12], "tri": 7, "hit": 7, "ball": 7, "oppon": 7, "touch": 7, "goe": [7, 13], "past": [7, 9], "shot": 7, "win": [7, 12], "andrej": 7, "karpathi": 7, "bootcamp": 7, "uc": 7, "berkelei": 7, "mechan": [7, 9, 11], "theori": [7, 10, 13], "openai": 7, "while": [7, 9, 10, 12, 13], "simul": 7, "try": [7, 8, 9, 10, 13, 15], "literatur": 7, "link": [7, 10, 12], "conveni": [7, 9, 10, 14], "free": [7, 12], "colaboratori": 7, "tpu": 7, "acceler": [7, 11], "trial": 7, "interact": [7, 8, 9, 11, 15], "gain": [7, 10], "action": 7, "receiv": 7, "proce": [7, 13], "happen": [7, 9, 10, 13], "deem": 7, "present": [7, 9, 12, 14, 15], "what": [7, 9, 13, 15], "overal": 7, "detail": [7, 9, 10, 12, 13, 14, 15], "introductori": 7, "book": [7, 9], "richard": 7, "sutton": 7, "barton": 7, "concis": 7, "remain": [7, 10, 11], "finit": 7, "horizon": 7, "explor": [7, 10], "exploit": 7, "feedback": 7, "partial": 7, "instead": [7, 8, 9, 11, 13, 14, 15], "cumul": [7, 8], "known": [7, 10, 14], "estim": [7, 8, 14], "visit": [7, 9, 10], "probabl": [7, 9], "versu": 7, "often": [7, 9, 10], "99": 7, "sequenc": [7, 9], "sometim": [7, 8, 10], "trajectori": 7, "yield": [7, 10], "algorithm": [7, 9, 14], "belong": [7, 9, 14], "famili": [7, 9], "typic": [7, 12], "wide": 7, "ascent": 7, "object": [7, 11, 14], "monitor": 7, "wrapper": 7, "instanti": [7, 9], "env": 7, "v0": 7, "action_spac": 7, "get_action_mean": 7, "leftfir": 7, "rightfir": 7, "noop": 7, "fire": 7, "mp4": 7, "wrap": [7, 10], "around": [7, 8, 9, 10, 14], "kind": [7, 8, 9, 12, 13, 15], "rather": [7, 10, 12], "digest": 7, "fed": 7, "deepmind": 7, "dqn": 7, "210x160": 7, "encod": [7, 8], "box": [7, 14], "observation_spac": 7, "discret": 7, "fix": [7, 15], "class": [7, 9, 10, 17], "ed": 7, "core": 7, "random_fram": 7, "rgb_arrai": 7, "400": [7, 10], "80x80x1": 7, "ravel": [7, 10], "flatten": 7, "helper": [7, 9], "frame_preprocess": 7, "observation_fram": 7, "crop": 7, "195": [7, 11, 14], "downsampl": 7, "remov": [7, 8, 9, 14], "144": [7, 13], "eras": 7, "109": 7, "earlier": [7, 9], "80x80": 7, "preprocessed_random_fram": 7, "product": [7, 11, 12], "send": 7, "12288743": 7, "d": [7, 9, 11, 15], "neuron": 7, "200": [7, 14], "empti": [7, 11], "xavier": [7, 9], "standard_norm": [7, 9], "w1": 7, "w2": [7, 9], "outlin": [7, 15], "policy_forward": 7, "sigmoid": [7, 9], "logit": 7, "p": [7, 10], "exponenti": [7, 9], "policy_backward": 7, "eph": 7, "epdlogp": 7, "dw2": [7, 9], "dh": 7, "dw1": 7, "epx": 7, "intermedi": [7, 9], "sever": [7, 9], "dlogp": 7, "dr": 7, "manual": 7, "full": [7, 13], "vstack": [7, 9], "stage": [7, 9], "toward": [7, 9, 14], "rmsprop": 7, "decai": [7, 9], "decay_r": 7, "zeros_lik": 7, "buffer": 7, "grad_buff": 7, "k": [7, 9, 13], "v": [7, 8, 9, 11, 13], "rmsprop_cach": 7, "discount_reward": 7, "gamma": 7, "r": [7, 8, 9, 10, 11, 13], "discounted_r": 7, "running_add": 7, "pseudocod": 7, "predefin": [7, 9], "sign": 7, "lead": [7, 10], "appropri": [7, 8, 10, 13, 15], "setup": [7, 13], "demo": 7, "hardwar": [7, 13], "cpu": 7, "beyond": [7, 10], "comparison": 7, "took": [7, 9, 10], "max_episod": 7, "dictat": 7, "At": [7, 12], "batch_siz": 7, "1e": [7, 9], "debug": 7, "prev_x": 7, "running_reward": 7, "reward_sum": 7, "episode_numb": 7, "motion": 7, "update_input": 7, "cur_x": 7, "tag": [7, 9], "output_scrol": 7, "cours": [7, 10, 12, 13], "aprob": 7, "uniform": [7, 9], "cach": [7, 9, 13], "recal": [7, 13], "done": [7, 9, 10, 11, 12, 13], "epr": 7, "discounted_epr": 7, "std": 7, "grad": [7, 9], "henc": [7, 9], "throw": 7, "traini": 7, "shut": 7, "uncom": 7, "doesn": [7, 8, 9, 12], "span": 7, "reason": [7, 10, 13, 15], "simplifi": [7, 11], "everyth": 7, "autodiff": 7, "autograd": 7, "lot": [7, 10], "problem": [7, 8, 9, 11], "ineffici": 7, "account": [7, 8, 9, 14], "larg": [7, 9, 10], "amount": [7, 10, 14], "million": 7, "node": [7, 9], "being": [7, 9, 11, 12, 17], "assist": 7, "alwai": [7, 9, 13], "advanc": [7, 10], "sensit": [7, 9], "resolv": 7, "self": [7, 9, 17], "proxim": 7, "ppo": 7, "john": [7, 13], "schulman": 7, "month": 7, "dota": 7, "competit": [7, 14], "Of": [7, 10, 13], "smaller": [7, 10, 11], "fast": [7, 8], "matthew": 7, "botvinick": 7, "sam": 7, "ritter": 7, "jane": 7, "wang": 7, "zeb": 7, "kurth": 7, "nelson": 7, "charl": 7, "blundel": 7, "demi": 7, "hassabi": 7, "educ": [7, 9, 17], "materi": [7, 14, 15, 17], "spin": 7, "lectur": [7, 13, 14], "taught": 7, "practition": 7, "david": 7, "silver": 7, "ucl": 7, "recognit": 7, "translat": 7, "classif": [7, 9], "explicit": 7, "wrong": [7, 8], "reli": 7, "had": [7, 9, 13], "major": 7, "2013": 7, "alexnet": 7, "breakthrough": 7, "vision": [7, 9, 14], "volodymyr": 7, "mnih": 7, "colleagu": 7, "abl": [7, 8, 10, 12, 13], "classic": 7, "arcad": 7, "Their": 7, "q": 7, "replai": 7, "off": [7, 14], "alphago": 7, "mont": 7, "carlo": 7, "tree": [7, 17], "search": [7, 14], "2000": [7, 9], "influenc": [7, 9, 10], "ronald": 7, "william": 7, "1992": 7, "1986": 7, "1990": 7, "gerald": 7, "tesauro": 7, "tempor": 7, "td": 7, "gammon": 7, "1995": 7, "ibm": 7, "backgammon": 7, "ji": 7, "lin": 7, "robot": 7, "1993": 7, "solv": 7, "alphazero": 7, "master": 7, "chess": 7, "shogi": 7, "2018": 7, "alphastar": 7, "starcraft": 7, "actor": 7, "imit": 7, "distil": 7, "oriol": 7, "vinyal": 7, "battlefield": 7, "art": [7, 9], "dice": 7, "why": [7, 9, 17], "popular": [7, 9], "remot": [7, 9], "helicopt": 7, "pieter": 7, "abbeel": 7, "2006": 7, "virtual": 7, "safer": 7, "implic": 7, "neurosci": 7, "tool": [7, 11], "docker": 7, "freeglut3": 7, "dev": 7, "xvfb": 7, "x11": 7, "apt": 7, "txt": [7, 9], "configur": 7, "yml": [7, 15], "under": [7, 9, 11, 12, 13, 14], "channel": [7, 13, 14], "pyvirtualdisplai": 7, "anyth": [7, 12], "ffmpeg": 7, "pyopengl": 7, "ipythondisplai": 7, "html": [7, 9], "400x300": 7, "visibl": 7, "300": 7, "echo": 7, "star": 7, "sy": 7, "glob": 7, "base64": 7, "show_any_video": 7, "mp4video": 7, "mp4list": 7, "b64encod": 7, "alt": 7, "autoplai": 7, "height": 7, "400px": 7, "src": 7, "decod": 7, "gameplai": 7, "insid": [7, 8, 9, 10, 12], "instruct": [7, 10], "linux": 7, "maco": 7, "termin": 7, "offici": [7, 8, 9], "deal": [8, 9], "decid": [8, 9], "invalid": 8, "entri": [8, 11, 13, 15], "flag": 8, "unwant": 8, "somehow": 8, "nomask": 8, "associ": 8, "whether": [8, 9], "said": 8, "unmask": 8, "maskedarrai": 8, "datatyp": 8, "fill_valu": 8, "order": [8, 10, 11, 12, 13], "situat": 8, "copi": [8, 10, 17], "own": [8, 9, 13, 14, 17], "bug": 8, "possibli": 8, "compact": 8, "wish": [8, 9, 13], "exclud": 8, "Not": [8, 12], "specif": [8, 9, 10], "univers": [8, 9, 10, 13, 14], "ufunc": 8, "kaggl": [8, 14], "outbreak": 8, "begin": [8, 9, 10, 11, 12, 14], "late": 8, "getcwd": 8, "folder": [8, 9, 14], "filepath": 8, "filenam": 8, "mostli": 8, "seventh": 8, "summari": [8, 12], "extend": 8, "rightmost": 8, "lowermost": 8, "dai": 8, "record": [8, 9], "gather": 8, "genfromtxt": 8, "select": [8, 10, 13, 15, 17], "extract": [8, 9, 13, 14], "skip_head": 8, "portion": [8, 13], "str_": 8, "max_row": 8, "utf": 8, "sig": 8, "geograph": 8, "six": [8, 11], "nbcase": 8, "int_": 8, "string": [8, 9], "whole": [8, 9], "tick": 8, "transpos": [8, 13], "dash": 8, "selected_d": 8, "xtick": 8, "jan": 8, "feb": 8, "graph": [8, 11, 13], "strang": 8, "januari": 8, "februari": 8, "1st": 8, "know": [8, 9, 12, 13], "region": [8, 10, 14], "countri": [8, 9], "provinc": 8, "china": 8, "sens": [8, 13], "group": [8, 9], "totals_row": 8, "china_tot": 8, "247": 8, "288": 8, "817": 8, "11820": 8, "14410": 8, "17237": 8, "someth": [8, 13], "suppos": 8, "258": 8, "270": 8, "375": 8, "7153": 8, "9074": 8, "11177": 8, "520": 8, "604": 8, "683": 8, "422": 8, "493": 8, "566": 8, "attempt": [8, 9], "obvious": 8, "interfer": 8, "nbcases_ma": 8, "masked_valu": 8, "masked_arrai": 8, "mention": [8, 10], "attribut": 8, "mind": [8, 9, 13], "hubei": 8, "china_mask": 8, "278": 8, "574": 8, "835": 8, "11821": 8, "14411": 8, "17238": 8, "999999": 8, "directli": 8, "seem": [8, 9, 10], "agre": 8, "mainland": 8, "hong": 8, "kong": 8, "taiwan": 8, "macau": 8, "unspecifi": 8, "mayb": 8, "nonzero": 8, "correctli": 8, "308": 8, "440": 8, "11791": 8, "14380": 8, "17205": 8, "focus": [8, 9, 14], "mischaracter": 8, "evolut": 8, "curv": [8, 9], "interpol": 8, "int64": 8, "logic": 8, "negat": 8, "u7": 8, "cubic": 8, "line2d": 8, "0x7faaac7f7a60": 8, "elabor": 8, "unavail": 8, "28th": 8, "ytick": 8, "17500": 8, "ncubic": 8, "substitut": 8, "far": [8, 14], "usemask": 8, "topic": [8, 9], "found": [8, 10, 13, 17], "hardmask": 8, "softmask": 8, "ensheng": 8, "dong": 8, "hongru": 8, "du": 8, "lauren": 8, "gardner": 8, "web": [8, 9], "dashboard": 8, "lancet": 8, "infecti": 8, "diseas": 8, "volum": 8, "page": [8, 9, 10, 12, 13], "533": 8, "issn": 8, "1473": 8, "3099": 8, "doi": [8, 9], "org": 8, "1016": 8, "s1473": 8, "30120": 8, "social": 9, "relev": [9, 11], "acquir": 9, "recurr": 9, "piec": 9, "50": [9, 10, 13], "movi": 9, "sequenti": 9, "todai": [9, 10], "everydai": 9, "discriminatori": 9, "fair": 9, "consider": [9, 10], "consum": 9, "throughout": [9, 10], "question": [9, 10, 12], "pipelin": 9, "calculu": 9, "recommend": 9, "d2l": 9, "datafram": 9, "pooch": 9, "pointer": 9, "tend": [9, 10], "histor": 9, "skew": 9, "imbalanc": 9, "protect": 9, "bias": 9, "outcom": 9, "absenc": 9, "anonym": 9, "trevisan": 9, "reilli": 9, "care": [9, 13], "along": [9, 12, 14], "person": 9, "routin": 9, "impair": 9, "medic": [9, 14], "emot": 9, "pain": 9, "chronic": 9, "ill": 9, "financi": 9, "incom": 9, "welfar": 9, "payment": 9, "discrimin": 9, "abus": 9, "prais": 9, "healthcar": [9, 14], "servic": 9, "suicid": 9, "especi": [9, 14], "compromis": 9, "safeti": 9, "fingerprint": 9, "voic": 9, "difficult": 9, "consent": 9, "platform": 9, "necess": 9, "pseudonym": 9, "curat": [9, 15], "activist": 9, "former": 9, "latter": 9, "maa": 9, "eas": 9, "zenodo": 9, "usag": 9, "commerci": 9, "aforement": 9, "pertain": [9, 16], "globe": 9, "climat": 9, "femin": 9, "lgbtqa": 9, "racism": 9, "newspap": 9, "nation": [9, 14], "archiv": 9, "cite": 9, "transcrib": 9, "speaker": 9, "demograph": 9, "focu": [9, 10, 14], "barnard": 9, "colleg": 9, "leymah": 9, "gbowe": 9, "un": 9, "youth": 9, "malala": 9, "yousafzai": 9, "guardian": 9, "remark": 9, "unga": 9, "racial": 9, "linda": 9, "greenfield": 9, "mission": 9, "dare": 9, "greta": 9, "thunberg": 9, "nbc": 9, "silenc": 9, "severn": 9, "suzuki": 9, "earth": 9, "charter": 9, "hope": 9, "harvei": 9, "milk": 9, "museum": 9, "boston": 9, "thrive": 9, "confer": [9, 14], "ellen": 9, "huffpost": 9, "dream": 9, "martin": 9, "luther": 9, "king": 9, "marshal": 9, "crucial": [9, 11], "dive": 9, "brief": 9, "undertak": 9, "clean": 9, "denois": 9, "unhelp": 9, "nois": [9, 14], "lowercas": 9, "bracket": [9, 12], "sentenc": [9, 12], "cluster": 9, "embed": 9, "space": [9, 11], "glove": 9, "unsupervis": 9, "stanford": 9, "global": 9, "corpu": 9, "edu": 9, "project": [9, 10, 11, 17], "billion": 9, "token": 9, "840": 9, "exhibit": 9, "stereotyp": 9, "gender": 9, "trace": 9, "occup": 9, "problemat": 9, "nearest": 9, "de": [9, 14], "cs224n": 9, "1184": 9, "6835575": 9, "pdf": 9, "pd": 9, "zipfil": 9, "textpreprocess": 9, "txt_to_df": 9, "str": 9, "imdb_train": 9, "in_fil": 9, "strip": 9, "df": [9, 10], "reset_index": 9, "drop": 9, "unzipp": 9, "to_extract": 9, "outdir": 9, "output_fil": 9, "cleantext": 9, "text_column": 9, "remove_stopword": 9, "remove_punc": 9, "hous": 9, "bool": [9, 14], "stopword": 9, "punctuat": 9, "symbol": 9, "gist": 9, "sebleier": 9, "554280": 9, "am": 9, "he": 9, "her": 9, "herself": 9, "him": 9, "himself": 9, "m": [9, 11, 13], "itself": [9, 10], "me": 9, "my": 9, "myself": 9, "nor": 9, "ought": 9, "she": 9, "theirs": 9, "themselv": [9, 10], "too": 9, "whom": 9, "yourselv": 9, "remove_tag": 9, "sub": 9, "data_without_stopword": 9, "clean_": 9, "cw": 9, "regex": 9, "to_numpi": 9, "sent_tokenis": 9, "w": [9, 11], "pop": 9, "sentences_clean": 9, "word_tokenis": 9, "loadglovemodel": 9, "emb_path": 9, "dict": 9, "glovemodel": 9, "splitlin": 9, "wordembed": 9, "text_to_para": 9, "para_len": 9, "paragraph": 9, "no_para": 9, "ceil": 9, "aggreg": 9, "divmod": 9, "agg_sent": 9, "para": 9, "sent": 9, "scientist": 9, "registri": 9, "system": [9, 10, 11, 12], "os_cach": 9, "hash": 9, "uncorrupt": 9, "6a38ea6ab5e1902cc03f6b9294ceea5e8ab985af991f35bcabd301a08ea5b3f0": 9, "imdb_test": 9, "7363ef08ad996bf4233b115008d6d7f9814b7cc0f4d13ab570b938701eadefeb": 9, "6b": 9, "50d": 9, "617afb2fe6cbd085c235baf7a465b96f4112bd7f7ccb2b2cbd649fed9cbcf2fb": 9, "custom": 9, "5281": 9, "4117827": 9, "textproc": 9, "train_df": 9, "test_df": 9, "occurr": 9, "ahead": [9, 13], "refrain": 9, "speech_data_path": 9, "speech_df": 9, "read_csv": 9, "x_pred": 9, "unzip": 9, "act": [9, 11], "300d": 9, "emb_matrix": 9, "plain": 9, "suitabl": 9, "multilay": 9, "mlp": 9, "straight": 9, "never": [9, 12], "share": [9, 12, 16, 17], "moreov": 9, "vari": [9, 10, 11], "rnn": 9, "regardless": [9, 13], "retain": [9, 13], "blow": 9, "connect": 9, "shortcom": 9, "vanish": 9, "address": 9, "gif": [9, 14], "rectangl": [9, 13], "respons": [9, 11], "rememb": [9, 15], "via": [9, 14], "c_": 9, "dedic": 9, "gate": 9, "initialise_param": 9, "hidden_dim": 9, "input_dim": 9, "wf": 9, "bf": 9, "wi": 9, "bi": [9, 10], "candid": 9, "wcm": 9, "bcm": 9, "wo": 9, "bo": 9, "b2": 9, "forgotten": 9, "similarli": [9, 11, 13], "stai": 9, "fmin": 9, "ab": [9, 10, 11], "old": 9, "attent": 9, "fp_forget_g": 9, "concat": 9, "ft": 9, "govern": 9, "tanh": 9, "regul": 9, "flow": 9, "fp_input_g": 9, "cmt": 9, "fp_output_g": 9, "next_c": 9, "ot": 9, "next_h": 9, "firstli": 9, "fp_fc_layer": 9, "last_h": 9, "z2": 9, "a2": 9, "forward_prop": 9, "x_vec": 9, "time_step": 9, "initialis": 9, "prev_h": 9, "prev_c": 9, "lstm_valu": 9, "fc_valu": 9, "happi": 9, "xt": 9, "lstm_cach": 9, "fc_cach": 9, "accumul": [9, 13], "straightforward": [9, 12, 14], "nonetheless": 9, "initialize_grad": 9, "param": 9, "behind": [9, 10], "suggest": [9, 12, 14], "christina": 9, "kouridi": 9, "bp_forget_g": 9, "dh_prev": 9, "dc_prev": 9, "dft": 9, "dl": 9, "da2": 9, "dz2": 9, "dwf": 9, "dbf": 9, "keepdim": 9, "dh_f": 9, "bp_input_g": 9, "dit": 9, "dcmt": 9, "dwi": 9, "dwcm": 9, "dbi": 9, "dbcm": 9, "dhi": 9, "dh_i": 9, "dhcm": 9, "dh_cm": 9, "bp_output_g": 9, "dwo": 9, "dbo": 9, "dho": 9, "dh_o": 9, "bp_fc_layer": 9, "db2": 9, "dh_last": 9, "backprop": 9, "relat": [9, 10, 11, 13], "prev": 9, "adam": 9, "stochast": 9, "recent": [9, 12], "broader": 9, "beta1": 9, "beta2": 9, "converg": [9, 10], "robust": 9, "initialise_mav": 9, "update_paramet": 9, "001": 9, "impli": 9, "poorli": 9, "behav": 9, "likelihood": 9, "loss_f": 9, "epsilon": 9, "divis": [9, 12], "squeez": 9, "testing_loss": 9, "train_j": 9, "y_pred": 9, "test_j": 9, "mean_train_cost": 9, "mean_test_cost": 9, "diagnos": 9, "add_subplot": [9, 11], "111": [9, 13], "set_ylabel": [9, 10], "break": [9, 11], "isfil": 9, "allow_pickl": 9, "enumer": [9, 10], "pred": 9, "para_token": 9, "sent_prob": 9, "threshold": [9, 10, 14], "pos_indic": 9, "neg_indic": 9, "pos_para": 9, "neg_para": 9, "no_pos_para": 9, "no_neg_para": 9, "percentag": 9, "pos_perc": 9, "bar": 9, "carri": 9, "priorit": 9, "clariti": 9, "neighbor": 9, "context": [9, 14], "led": 9, "encourag": [9, 10, 13], "tweak": [9, 10], "easi": [9, 12], "primarili": 9, "express": [9, 10, 12], "ironi": 9, "sarcasm": 9, "humor": 9, "media": 9, "abbrevi": 9, "neatli": 9, "convei": [9, 10, 11], "ag": 9, "grow": [9, 10], "induct": 9, "essenti": 9, "contextu": 9, "aris": [9, 10], "societ": 9, "creep": 9, "amplifi": [9, 12], "femal": 9, "male": 9, "awar": [9, 13], "demand": 9, "drill": 9, "ethnic": 9, "hopefulli": 9, "explod": [9, 10], "bidirect": 9, "nowadai": 9, "tackl": 9, "plagu": 9, "transfer": 9, "parallel": 9, "lengthi": 9, "ture": 9, "institut": [9, 14], "www": 9, "ac": [9, 11], "uk": 9, "intellig": 9, "shift": 9, "beauti": 10, "compel": 10, "oftentim": 10, "rel": [10, 14], "coastlin": 10, "seashel": 10, "fern": 10, "antenna": 10, "realli": 10, "began": 10, "truli": 10, "appreci": 10, "1970": 10, "graphic": [10, 12], "accident": 10, "discoveri": 10, "beno\u00eet": 10, "stumbl": 10, "mystifi": 10, "possess": 10, "ever": 10, "effici": 10, "variat": 10, "uniqu": 10, "make_axis_locat": 10, "mpl_toolkit": 10, "axes_grid1": 10, "make_axes_locat": 10, "elementari": 10, "expon": 10, "sin": 10, "shortli": 10, "behaviour": 10, "2j": 10, "4j": 10, "shrink": 10, "plane": 10, "mesh": 10, "meshgrid": 10, "1j": 10, "greatli": 10, "absolut": 10, "modulu": 10, "3d": [10, 11], "scatterplot": 10, "imaginari": 10, "set_zlabel": 10, "rough": [10, 15], "closest": 10, "0i": 10, "lose": 10, "impress": 10, "mundan": 10, "meet": [10, 17], "ey": 10, "exot": 10, "z_1": 10, "4i": 10, "z_2": 10, "z_3": 10, "1i": 10, "selected_valu": 10, "41j": 10, "num_it": 10, "colorbar": 10, "bottom": [10, 12], "surpris": 10, "hypothesi": 10, "prime": 10, "chaotic": 10, "jump": 10, "despit": [10, 11], "tini": 10, "diverg": 10, "although": [10, 13], "uncertain": 10, "surpass": 10, "distanc": [10, 11, 14], "doom": 10, "radiu": [10, 11], "quantifi": 10, "answer": [10, 12], "pose": 10, "talli": 10, "divergence_r": 10, "diverge_len": 10, "conv_mask": 10, "confus": 10, "glanc": 10, "quicker": 10, "suffici": 10, "unbeat": 10, "condition": 10, "resort": 10, "colour": 10, "im": 10, "extent": 10, "cax": 10, "append_ax": 10, "pad": 10, "stun": 10, "yellow": 10, "purpl": 10, "pattern": 10, "border": 10, "fascin": 10, "realiz": 10, "fill": [10, 12], "likewis": 10, "boundari": 10, "greenish": 10, "wider": 10, "reus": 10, "rest": 10, "small_mesh": 10, "plot_fract": 10, "rainbow": 10, "newli": 10, "kwarg": 10, "pi": [10, 14], "eleg": 10, "plasma": 10, "75": 10, "greens_r": 10, "famou": 10, "equival": 10, "infinit": 10, "renam": 10, "complex128": 10, "hot": [10, 14], "general_julia": 10, "cool": 10, "emerg": 10, "stick": 10, "rais": 10, "base_degre": 10, "needless": 10, "fiddl": 10, "densiti": 10, "involv": [10, 11], "subtract": 10, "ratio": 10, "newton_fract": 10, "pz": 10, "dp": 10, "effortlessli": 10, "lightgrai": 10, "15z": 10, "8z": 10, "60z": 10, "copper": 10, "tan": 10, "dz": 10, "sec": 10, "f_tan": 10, "d_tan": 10, "neat": 10, "wild": 10, "sum_": 10, "sin_sum": 10, "d_sin_sum": 10, "wacki": 10, "fun": 10, "terrain": [10, 14], "distinct": [10, 12], "yet": 10, "excit": 10, "gist_stern": 10, "sine": 10, "plasma_r": 10, "jet": 10, "got": 10, "accid": 10, "mistak": 10, "endless": 10, "suppli": 10, "creation": 10, "tinker": 10, "complic": [10, 11], "verifi": 10, "recap": 10, "hausdorff": 10, "treatment": 10, "floor": 11, "beam": 11, "reaction": 11, "resist": 11, "movement": 11, "cabl": 11, "unkown": 11, "comand": 11, "linalg": [11, 13], "norm": [11, 13], "mass": 11, "awai": 11, "f_x": 11, "f_y": 11, "f_z": 11, "r_x": 11, "r_y": 11, "r_z": 11, "centroid": 11, "forcea": 11, "forceb": 11, "quiver": 11, "d3": 11, "set_xlim": 11, "set_ylim": 11, "set_zlim": 11, "eman": 11, "meant": 11, "easili": 11, "forcec": 11, "counteract": 11, "prior": [11, 13], "broken": 11, "nullifi": 11, "signifi": 11, "outli": 11, "rotat": 11, "experienc": 11, "coordin": 11, "stationari": 11, "pole": 11, "secur": 11, "ground": 11, "5n": 11, "perpendicularli": 11, "2m": 11, "wire": 11, "attach": 11, "tension": 11, "cord": 11, "3m": 11, "polebas": 11, "cordbas": 11, "cordconnect": 11, "poledirect": 11, "corddirect": 11, "cordunit": 11, "83205029": 11, "5547002": 11, "cordtens": 11, "forcecord": 11, "16025147": 11, "77350098": 11, "momentcord": 11, "32050294": 11, "meter": 11, "bd": 11, "BE": 11, "cf": 11, "unitbd": 11, "unitb": 11, "unitcf": 11, "radbd": 11, "radb": 11, "radcf": 11, "t_": 11, "r_": 11, "390": 11, "130": [11, 13], "780": 11, "1170": 11, "f_": 11, "m_": 11, "2t_": 11, "unknown": 11, "780n": 11, "390n": 11, "195n": 11, "1170n": 11, "130n": 11, "kinet": 11, "veloc": 11, "beer": 11, "johnston": 11, "mazurek": 11, "daniel": 12, "procida": 12, "di\u00e1taxi": 12, "cc": 12, "BY": 12, "sa": 12, "templat": 12, "craft": 12, "distinguish": [12, 13], "portrait": 12, "intend": 12, "school": 12, "bullet": 12, "overexplain": 12, "bog": 12, "obscur": 12, "knew": 12, "enthusiasm": 12, "imagin": 12, "audienc": 12, "willing": 12, "incomplet": 12, "english": [12, 15], "ordinarili": 12, "abstract": 12, "tipoff": 12, "bake": 12, "cake": 12, "endpoint": 12, "payoff": 12, "recip": 12, "ingredi": 12, "readi": [12, 13], "oven": 12, "expert": 12, "writer": 12, "learner": 12, "fall": 12, "grade": 12, "ye": 12, "assur": 12, "except": [12, 13], "invit": 12, "artist": 12, "toolset": 12, "aren": 12, "scan": 12, "somebodi": 12, "polish": [12, 15], "decor": 12, "likeli": 12, "engag": [12, 15], "towner": 12, "feel": 12, "pick": 12, "destin": 12, "sight": 12, "recur": 12, "crossrefer": 12, "strengthen": 12, "bad": 12, "traceback": 12, "comment": [12, 15], "tripl": 12, "backquot": 12, "won": 12, "angl": 12, "lt": 12, "gt": 12, "zerodivisionerror": 12, "bbe761e74a70": 12, "exercis": 12, "perhap": 12, "footnot": 12, "spoiler": 12, "ideal": 12, "bare": 12, "inspir": 12, "decomposit": 13, "singular": 13, "todo": 13, "rm": 13, "minimum": [13, 14], "importerror": 13, "misc": 13, "v1": 13, "img": [13, 14], "dat": 13, "githubusercont": 13, "home": 13, "circleci": 13, "imread": [13, 14], "submodul": 13, "imageio": 13, "treat": 13, "crash": 13, "scikit": [13, 14], "inlin": 13, "forth": 13, "768": 13, "1024": [13, 14], "tupl": 13, "fact": 13, "rgb": 13, "768x1024": 13, "furthermor": 13, "ndim": 13, "3rd": 13, "syntax": 13, "138": 13, "153": 13, "119": 13, "131": 13, "139": 13, "89": 13, "110": 13, "118": 13, "134": 13, "146": 13, "115": 13, "117": 13, "133": 13, "107": 13, "120": 13, "85": 13, "112": 13, "img_arrai": 13, "scalar": [13, 14], "broadcast": 13, "img_as_float": 13, "inquir": 13, "red_arrai": 13, "green_arrai": 13, "blue_arrai": 13, "diagon": 13, "largest": 13, "smallest": 13, "colorimetri": 13, "fairli": 13, "2126": 13, "7152": 13, "0722": 13, "matmul": 13, "img_grai": 13, "colormap": [13, 14], "vt": 13, "worri": [13, 15], "pretti": 13, "compat": [13, 14], "valueerror": 13, "econom": 13, "reconstruct": 13, "768x768": 13, "1024x1024": [13, 14], "fill_diagon": 13, "explan": 13, "43712046073728e": 13, "allclos": 13, "150th": 13, "intact": 13, "approx": 13, "wors": 13, "instinct": 13, "mxn": 13, "permut": 13, "fortun": 13, "reorder": 13, "img_array_transpos": 13, "reassembl": 13, "interchang": 13, "indistinguish": 13, "outsid": 13, "558487697898684e": 13, "0000000000000053": 13, "clip": 13, "excis": 13, "peform": 13, "hood": 13, "warn": 13, "messag": 13, "approx_img": 13, "unfamiliar": 13, "ellipsi": 13, "placehold": 13, "sharp": 13, "golub": 13, "van": 13, "loan": 13, "baltimor": 13, "hopkin": 13, "press": 13, "1985": 13, "matlab": 13, "idl": 13, "workflow": [14, 15], "pneumonia": 14, "particularli": 14, "radiologi": 14, "chestx": 14, "ray8": 14, "health": 14, "nih": 14, "png": 14, "patient": 14, "repositori": [14, 15, 17], "cvpr": 14, "gigabyt": 14, "quickstart": 14, "dicom": 14, "suit": 14, "ndimag": 14, "00000011_001": 14, "dir": 14, "xray_imag": 14, "v3": 14, "008": 14, "num_img": 14, "combined_xray_images_1": 14, "00000011_00": 14, "anim": 14, "mimwrit": 14, "gif_path": 14, "durat": 14, "biomed": 14, "emphas": 14, "rapid": 14, "smooth": 14, "gaussian_laplac": 14, "xray_image_laplace_gaussian": 14, "frequenc": 14, "gaussian_gradient_magnitud": 14, "x_ray_image_gaussian_gradi": 14, "spatial": 14, "horizont": 14, "vertic": 14, "3x3": 14, "kernel": 14, "pythagorean": 14, "theorem": 14, "hypot": 14, "rescal": 14, "output_channel": 14, "input_channel": 14, "min_valu": 14, "max_valu": 14, "x_sobel": 14, "y_sobel": 14, "xray_image_sobel": 14, "float16": 14, "float32": 14, "cmrmap": 14, "fourier": 14, "smoothen": 14, "prewitt": 14, "fourier_gaussian": 14, "x_prewitt": 14, "y_prewitt": 14, "xray_image_canni": 14, "prism": 14, "nipy_spectr": 14, "array_lik": 14, "median": 14, "172": 14, "52233219146729": 14, "256": 14, "histogram": 14, "pixel_intensity_distribut": 14, "bin": 14, "240": 14, "exceed": 14, "150": 14, "xray_image_mask_noisi": 14, "xray_image_mask_less_noisi": 14, "noisi": 14, "openi": 14, "databas": 14, "bandwidth": 14, "restrict": 14, "segment": 14, "pydicom": 14, "quest": 14, "datacamp": 14, "raspberri": 14, "maker": 14, "portal": 14, "slide": 14, "cs6670": 14, "cornel": 14, "carpentri": 14, "385": 14, "carnegi": 14, "mellon": 14, "welcom": 15, "propos": 15, "pleas": 15, "draft": 15, "commun": [15, 17], "effort": 15, "artwork": 15, "myst": 15, "nb": 15, "jupytext": 15, "commonmark": 15, "repo": 15, "restructuredtext": 15, "rst": 15, "barrier": 15, "ipynb": [15, 17], "plan": 15, "respond": 15, "quickli": 15, "fork": 15, "haven": 15, "branch": 15, "readm": 15, "edit": 15, "secret": 15, "properli": 15, "submiss": 15, "mask": [16, 17], "button": 17, "rocket": 17, "icon": 17, "corner": 17, "conduct": 17, "team": 17, "nep": 17}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"numpi": [0, 2, 4, 6, 11, 12, 16, 17], "applic": [0, 11], "articl": [1, 17], "help": [1, 17], "improv": [1, 17], "tutori": [1, 12, 15, 17], "determin": [2, 11], "moor": 2, "": [2, 4, 5, 9, 11, 12], "law": [2, 11], "real": [2, 12], "data": [2, 4, 6, 8, 9], "what": [2, 3, 4, 5, 8, 10, 11, 12], "you": [2, 3, 4, 5, 8, 9, 10, 11, 12], "ll": [2, 3, 4, 5, 8, 10, 11, 12], "do": [2, 3, 4, 5, 8, 9, 10, 11, 12], "skill": 2, "learn": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "need": [2, 3, 4, 5, 8, 10, 11, 12], "build": [2, 5, 6, 9], "an": [2, 9, 13, 14, 15], "exponenti": 2, "function": [2, 7], "load": [2, 4, 6, 9], "histor": 2, "manufactur": 2, "your": [2, 3, 4, 7, 10, 12, 15], "workspac": 2, "calcul": [2, 5], "growth": 2, "curv": 2, "transistor": 2, "share": [2, 4], "result": [2, 14], "zip": 2, "arrai": [2, 4, 8, 13, 14], "csv": [2, 4], "file": [2, 3, 4], "creat": [2, 4, 7, 10, 15], "own": [2, 10, 12, 15], "comma": 2, "separ": 2, "valu": [2, 5, 11], "wrap": [2, 3, 4, 11], "up": [2, 3, 4, 7, 11], "refer": [2, 8, 11], "pair": [3, 5], "jupyt": [3, 7, 15], "notebook": [3, 7, 12, 15], "myst": 3, "nb": 3, "background": 3, "ipynb": 3, "md": 3, "1": [3, 6, 9], "classic": 3, "jupytext": 3, "2": [3, 6, 9], "jupyterlab": 3, "3": [3, 6, 9], "command": 3, "line": 3, "save": 4, "savez": 4, "remov": 4, "them": 4, "back": 4, "reassign": 4, "npzfile": 4, "x": [4, 14], "y": 4, "success": 4, "anoth": [4, 11], "option": 4, "human": 4, "readabl": 4, "rearrang": 4, "singl": 4, "2d": 4, "us": [4, 8, 12, 14, 17], "savetxt": 4, "our": [4, 9, 15], "rememb": 4, "type": 4, "analyz": 5, "impact": 5, "lockdown": 5, "air": 5, "qualiti": 5, "delhi": 5, "india": 5, "The": [5, 12, 14], "problem": 5, "pollut": 5, "dataset": [5, 6, 9, 12], "index": 5, "move": 5, "averag": 5, "sub": 5, "indic": 5, "student": 5, "t": 5, "test": [5, 6], "aqi": 5, "sampl": 5, "defin": [5, 7], "hypothesi": 5, "statist": 5, "p": 5, "mean": 5, "In": [5, 8, 10, 12], "practic": [5, 8, 12], "further": [5, 8, 10, 12, 13], "read": [5, 8, 10, 12, 13], "deep": [6, 7, 9], "mnist": 6, "prerequisit": [6, 7, 9, 13, 14], "tabl": [6, 7, 9, 14], "content": [6, 7, 9, 13, 14, 15, 17], "preprocess": [6, 7, 9], "convert": 6, "imag": [6, 14], "float": 6, "point": 6, "format": 6, "label": 6, "through": 6, "categor": 6, "one": 6, "hot": 6, "encod": 6, "train": [6, 7, 9], "small": 6, "neural": [6, 7, 9], "network": [6, 7, 9], "from": [6, 7, 9], "scratch": 6, "block": 6, "model": [6, 9], "architectur": [6, 9], "summari": 6, "compos": 6, "begin": 6, "next": [6, 7, 9, 14], "step": [6, 7, 9, 14], "reinforc": 7, "pong": 7, "pixel": 7, "A": 7, "note": [7, 15], "rl": 7, "glossari": 7, "set": [7, 10], "frame": 7, "observ": 7, "polici": 7, "forward": [7, 9], "pass": 7, "updat": [7, 9], "backpropag": [7, 9], "discount": 7, "reward": 7, "expect": 7, "return": 7, "agent": 7, "number": 7, "episod": 7, "appendix": 7, "how": [7, 9, 12], "video": 7, "playback": 7, "mask": [8, 14], "ar": [8, 12], "when": [8, 12], "can": 8, "thei": 8, "see": 8, "covid": 8, "19": 8, "explor": 8, "miss": 8, "fit": 8, "sentiment": 9, "analysi": 9, "notabl": 9, "speech": 9, "last": 9, "decad": 9, "collect": 9, "imdb": 9, "review": 9, "transcript": 9, "introduct": 9, "long": 9, "short": 9, "term": 9, "memori": 9, "overview": 9, "propag": 9, "But": 9, "obtain": 9, "lstm": 9, "output": 9, "paramet": 9, "look": 9, "ethic": 9, "perspect": 9, "plot": [10, 12], "fractal": 10, "warmup": 10, "julia": 10, "mandelbrot": 10, "gener": 10, "newton": [10, 11], "conclus": 10, "On": [10, 12], "static": 11, "equilibrium": 11, "solv": 11, "second": [11, 14], "sum": 11, "moment": 11, "find": 11, "physic": 11, "properti": [11, 13], "exampl": 11, "addit": 11, "write": 12, "after": 12, "horizont": 12, "rule": 12, "start": 12, "head": 12, "titl": 12, "have": 12, "verb": 12, "lowercas": 12, "sai": 12, "why": [12, 15], "differ": 12, "avoid": 12, "asid": 12, "illustr": 12, "possibl": 12, "similar": 12, "make": 12, "googl": 12, "doc": 12, "style": 12, "guid": 12, "must": 12, "fulli": 12, "execut": [12, 17], "linear": 13, "algebra": 13, "n": 13, "dimension": 13, "learner": 13, "profil": 13, "object": 13, "shape": 13, "axi": 13, "oper": [13, 14], "approxim": 13, "appli": [13, 14], "all": 13, "color": 13, "product": 13, "final": 13, "word": 13, "rai": 14, "process": 14, "examin": 14, "imageio": 14, "combin": 14, "multidimension": 14, "demonstr": 14, "progress": 14, "edg": 14, "detect": 14, "laplacian": 14, "gaussian": 14, "gradient": 14, "sobel": 14, "canni": 14, "filter": 14, "laplac": 14, "deriv": 14, "magnitud": 14, "method": 14, "feldman": 14, "np": 14, "where": 14, "compar": 14, "contribut": 15, "ad": 15, "issu": 15, "check": 15, "out": 15, "suggest": 15, "templat": 15, "upload": 15, "featur": 16, "non": 17, "link": 17, "resourc": 17}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"NumPy Applications": [[0, "numpy-applications"]], "Articles": [[1, "articles"]], "Help improve the tutorials!": [[1, null], [17, null]], "Determining Moore\u2019s Law with real data in NumPy": [[2, "determining-moore-s-law-with-real-data-in-numpy"]], "What you\u2019ll do": [[2, "what-you-ll-do"], [3, "what-you-ll-do"], [4, "what-you-ll-do"], [5, "what-you-ll-do"], [8, "what-you-ll-do"], [10, "what-you-ll-do"], [12, "what-you-ll-do"]], "Skills you\u2019ll learn": [[2, "skills-you-ll-learn"]], "What you\u2019ll need": [[2, "what-you-ll-need"], [3, "what-you-ll-need"], [4, "what-you-ll-need"], [5, "what-you-ll-need"], [8, "what-you-ll-need"], [10, "what-you-ll-need"], [12, "what-you-ll-need"]], "Building Moore\u2019s law as an exponential function": [[2, "building-moore-s-law-as-an-exponential-function"]], "Loading historical manufacturing data to your workspace": [[2, "loading-historical-manufacturing-data-to-your-workspace"]], "Calculating the historical growth curve for transistors": [[2, "calculating-the-historical-growth-curve-for-transistors"]], "Sharing your results as zipped arrays and a csv": [[2, "sharing-your-results-as-zipped-arrays-and-a-csv"]], "Zipping the arrays into a file": [[2, "zipping-the-arrays-into-a-file"]], "Creating your own comma separated value file": [[2, "creating-your-own-comma-separated-value-file"]], "Wrapping up": [[2, "wrapping-up"], [3, "wrapping-up"], [4, "wrapping-up"], [11, "wrapping-up"]], "References": [[2, "references"], [11, "references"]], "Pairing Jupyter notebooks and MyST-NB": [[3, "pairing-jupyter-notebooks-and-myst-nb"]], "What you\u2019ll learn": [[3, "what-you-ll-learn"], [4, "what-you-ll-learn"], [5, "what-you-ll-learn"], [8, "what-you-ll-learn"], [10, "what-you-ll-learn"], [12, "what-you-ll-learn"]], "Background": [[3, "background"]], "Pair your notebook files .ipynb and .md": [[3, "pair-your-notebook-files-ipynb-and-md"]], "1. Classic Jupyter Jupytext pairing": [[3, null]], "2. JupyterLab Jupytext pairing": [[3, null]], "3. Command line Jupytext pairing": [[3, null]], "Saving and sharing your NumPy arrays": [[4, "saving-and-sharing-your-numpy-arrays"]], "Create your arrays": [[4, "create-your-arrays"]], "Save your arrays with NumPy\u2019s savez": [[4, "save-your-arrays-with-numpy-s-savez"]], "Remove the saved arrays and load them back with NumPy\u2019s load": [[4, "remove-the-saved-arrays-and-load-them-back-with-numpy-s-load"]], "Reassign the NpzFile arrays to x and y": [[4, "reassign-the-npzfile-arrays-to-x-and-y"]], "Success": [[4, "success"]], "Another option: saving to human-readable csv": [[4, "another-option-saving-to-human-readable-csv"]], "Rearrange the data into a single 2D array": [[4, "rearrange-the-data-into-a-single-2d-array"]], "Save the data to csv file using savetxt": [[4, "save-the-data-to-csv-file-using-savetxt"]], "Our arrays as a csv file": [[4, "our-arrays-as-a-csv-file"]], "Success, but remember your types": [[4, "success-but-remember-your-types"]], "Analyzing the impact of the lockdown on air quality in Delhi, India": [[5, "analyzing-the-impact-of-the-lockdown-on-air-quality-in-delhi-india"]], "The problem of air pollution": [[5, "the-problem-of-air-pollution"]], "Building the dataset": [[5, "building-the-dataset"]], "Calculating the Air Quality Index": [[5, "calculating-the-air-quality-index"]], "Moving averages": [[5, "moving-averages"]], "Sub-indices": [[5, "sub-indices"]], "Air quality indices": [[5, "air-quality-indices"]], "Paired Student\u2019s t-test on the AQIs": [[5, "paired-student-s-t-test-on-the-aqis"]], "Sampling": [[5, "sampling"]], "Defining the hypothesis": [[5, "defining-the-hypothesis"]], "Calculating the test statistics": [[5, "calculating-the-test-statistics"]], "What do the t and p values mean?": [[5, "what-do-the-t-and-p-values-mean"]], "In practice\u2026": [[5, "in-practice"], [12, "in-practice"]], "Further reading": [[5, "further-reading"], [8, "further-reading"], [10, "further-reading"], [12, "further-reading"], [13, "further-reading"]], "Deep learning on MNIST": [[6, "deep-learning-on-mnist"]], "Prerequisites": [[6, "prerequisites"], [7, "prerequisites"], [9, "prerequisites"], [13, "prerequisites"], [14, "prerequisites"]], "Table of contents": [[6, "table-of-contents"], [7, "table-of-contents"], [9, "table-of-contents"], [14, "table-of-contents"]], "1. Load the MNIST dataset": [[6, "load-the-mnist-dataset"]], "2. Preprocess the data": [[6, "preprocess-the-data"]], "Convert the image data to the floating-point format": [[6, "convert-the-image-data-to-the-floating-point-format"]], "Convert the labels to floating point through categorical/one-hot encoding": [[6, "convert-the-labels-to-floating-point-through-categorical-one-hot-encoding"]], "3. Build and train a small neural network from scratch": [[6, "build-and-train-a-small-neural-network-from-scratch"]], "Neural network building blocks with NumPy": [[6, "neural-network-building-blocks-with-numpy"]], "Model architecture and training summary": [[6, "model-architecture-and-training-summary"]], "Compose the model and begin training and testing it": [[6, "compose-the-model-and-begin-training-and-testing-it"]], "Next steps": [[6, "next-steps"], [7, "next-steps"], [14, "next-steps"]], "Deep reinforcement learning with Pong from pixels": [[7, "deep-reinforcement-learning-with-pong-from-pixels"]], "A note on RL and deep RL": [[7, "a-note-on-rl-and-deep-rl"]], "Deep RL glossary": [[7, "deep-rl-glossary"]], "Set up Pong": [[7, "set-up-pong"]], "Preprocess frames (the observation)": [[7, "preprocess-frames-the-observation"]], "Create the policy (the neural network) and the forward pass": [[7, "create-the-policy-the-neural-network-and-the-forward-pass"]], "Set up the update step (backpropagation)": [[7, "set-up-the-update-step-backpropagation"]], "Define the discounted rewards (expected return) function": [[7, "define-the-discounted-rewards-expected-return-function"]], "Train the agent for a number of episodes": [[7, "train-the-agent-for-a-number-of-episodes"]], "Appendix": [[7, "appendix"]], "Notes on RL and deep RL": [[7, "notes-on-rl-and-deep-rl"]], "How to set up video playback in your Jupyter notebook": [[7, "how-to-set-up-video-playback-in-your-jupyter-notebook"]], "Masked Arrays": [[8, "masked-arrays"]], "What are masked arrays?": [[8, "what-are-masked-arrays"]], "When can they be useful?": [[8, "when-can-they-be-useful"]], "Using masked arrays to see COVID-19 data": [[8, "using-masked-arrays-to-see-covid-19-data"]], "Exploring the data": [[8, "exploring-the-data"]], "Missing data": [[8, "missing-data"]], "Fitting Data": [[8, "fitting-data"]], "In practice": [[8, "in-practice"]], "Reference": [[8, "reference"]], "Sentiment Analysis on notable speeches of the last decade": [[9, "sentiment-analysis-on-notable-speeches-of-the-last-decade"]], "1. Data Collection": [[9, "data-collection"]], "Collecting the IMDb reviews dataset": [[9, "collecting-the-imdb-reviews-dataset"]], "Collecting and loading the speech transcripts": [[9, "collecting-and-loading-the-speech-transcripts"]], "2. Preprocess the datasets": [[9, "preprocess-the-datasets"]], "3. Build the Deep Learning Model\u00b6": [[9, "build-the-deep-learning-model"]], "Introduction to a Long Short Term Memory Network": [[9, "introduction-to-a-long-short-term-memory-network"]], "Overview of the Model Architecture": [[9, "overview-of-the-model-architecture"]], "Forward Propagation": [[9, "forward-propagation"]], "But how do you obtain sentiment from the LSTM\u2019s output?": [[9, "but-how-do-you-obtain-sentiment-from-the-lstm-s-output"]], "Backpropagation": [[9, "backpropagation"]], "Updating the Parameters": [[9, "updating-the-parameters"]], "Training the Network": [[9, "training-the-network"]], "Sentiment Analysis on the Speech Data": [[9, "sentiment-analysis-on-the-speech-data"]], "Looking at our Neural Network from an ethical perspective": [[9, "looking-at-our-neural-network-from-an-ethical-perspective"]], "Next Steps": [[9, "next-steps"]], "Plotting Fractals": [[10, "plotting-fractals"]], "Warmup": [[10, "warmup"]], "Julia set": [[10, "julia-set"]], "Mandelbrot set": [[10, "mandelbrot-set"]], "Generalizing the Julia set": [[10, "generalizing-the-julia-set"]], "Newton Fractals": [[10, "newton-fractals"]], "Creating your own fractals": [[10, "creating-your-own-fractals"]], "In conclusion": [[10, "in-conclusion"]], "On your own": [[10, "on-your-own"], [12, "on-your-own"]], "Determining Static Equilibrium in NumPy": [[11, "determining-static-equilibrium-in-numpy"]], "What you\u2019ll do:": [[11, "what-you-ll-do"]], "What you\u2019ll learn:": [[11, "what-you-ll-learn"]], "What you\u2019ll need:": [[11, "what-you-ll-need"]], "Solving equilibrium with Newton\u2019s second law": [[11, "solving-equilibrium-with-newton-s-second-law"]], "Solving Equilibrium as a sum of moments": [[11, "solving-equilibrium-as-a-sum-of-moments"]], "Finding values with physical properties": [[11, "finding-values-with-physical-properties"]], "Another Example": [[11, "another-example"]], "Additional Applications": [[11, "additional-applications"]], "Learn to write a NumPy tutorial": [[12, "learn-to-write-a-numpy-tutorial"]], "After a horizontal rule, start your own headings": [[12, "after-a-horizontal-rule-start-your-own-headings"]], "Titles have verbs": [[12, "titles-have-verbs"]], "Titles are lowercase": [[12, "titles-are-lowercase"]], "What to say in \u201cWhat you\u2019ll learn\u201d": [[12, "what-to-say-in-what-you-ll-learn"]], "Why are \u201cWhat you\u2019ll do\u201d and \u201cWhat you\u2019ll learn\u201d different?": [[12, "why-are-what-you-ll-do-and-what-you-ll-learn-different"]], "Avoid asides": [[12, "avoid-asides"]], "Use plots and illustrations": [[12, "use-plots-and-illustrations"]], "Use real datasets when possible": [[12, "use-real-datasets-when-possible"]], "Tutorials and how-to\u2019s \u2013 similar but different": [[12, "tutorials-and-how-to-s-similar-but-different"]], "Make use of the Google doc style guide": [[12, "make-use-of-the-google-doc-style-guide"]], "The notebook must be fully executable": [[12, "the-notebook-must-be-fully-executable"]], "Linear algebra on n-dimensional arrays": [[13, "linear-algebra-on-n-dimensional-arrays"]], "Learner profile": [[13, "learner-profile"]], "Learning Objectives": [[13, "learning-objectives"]], "Content": [[13, "content"], [17, "content"]], "Shape, axis and array properties": [[13, "shape-axis-and-array-properties"]], "Operations on an axis": [[13, "operations-on-an-axis"]], "Approximation": [[13, "approximation"]], "Applying to all colors": [[13, "applying-to-all-colors"]], "Products with n-dimensional arrays": [[13, "products-with-n-dimensional-arrays"]], "Final words": [[13, "final-words"]], "X-ray image processing": [[14, "x-ray-image-processing"]], "Examine an X-ray with imageio": [[14, "examine-an-x-ray-with-imageio"]], "Combine images into a multidimensional array to demonstrate progression": [[14, "combine-images-into-a-multidimensional-array-to-demonstrate-progression"]], "Edge detection using the Laplacian-Gaussian, Gaussian gradient, Sobel, and Canny filters": [[14, "edge-detection-using-the-laplacian-gaussian-gaussian-gradient-sobel-and-canny-filters"]], "The Laplace filter with Gaussian second derivatives": [[14, "the-laplace-filter-with-gaussian-second-derivatives"]], "The Gaussian gradient magnitude method": [[14, "the-gaussian-gradient-magnitude-method"]], "The Sobel-Feldman operator (the Sobel filter)": [[14, "the-sobel-feldman-operator-the-sobel-filter"]], "The Canny filter": [[14, "the-canny-filter"]], "Apply masks to X-rays with np.where()": [[14, "apply-masks-to-x-rays-with-np-where"]], "Compare the results": [[14, "compare-the-results"]], "Contributing": [[15, "contributing"]], "Why Jupyter Notebooks?": [[15, "why-jupyter-notebooks"]], "Note": [[15, "note"]], "Adding your own tutorials": [[15, "adding-your-own-tutorials"]], "Create an issue": [[15, "create-an-issue"]], "Check out our suggested template": [[15, "check-out-our-suggested-template"]], "Upload your content": [[15, "upload-your-content"]], "NumPy Features": [[16, "numpy-features"]], "NumPy tutorials": [[17, "numpy-tutorials"]], "Non-executable articles": [[17, "non-executable-articles"]], "Useful links and resources": [[17, "useful-links-and-resources"]]}, "indexentries": {}}) \ No newline at end of file