Created
August 30, 2020 06:50
-
-
Save drofp/6c7356f8edfb3fe921a9da128e9f284b to your computer and use it in GitHub Desktop.
02.05-Computation-on-arrays-broadcasting.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"anaconda-cloud": {}, | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.1" | |
}, | |
"colab": { | |
"name": "02.05-Computation-on-arrays-broadcasting.ipynb", | |
"provenance": [], | |
"include_colab_link": true | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/drofp/6c7356f8edfb3fe921a9da128e9f284b/02-05-computation-on-arrays-broadcasting.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "OkNSlwL0FBY1", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<!--BOOK_INFORMATION-->\n", | |
"<img align=\"left\" style=\"padding-right:10px;\" src=\"https://github.com/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/figures/PDSH-cover-small.png?raw=1\">\n", | |
"\n", | |
"*This notebook contains an excerpt from the [Python Data Science Handbook](http://shop.oreilly.com/product/0636920034919.do) by Jake VanderPlas; the content is available [on GitHub](https://github.com/jakevdp/PythonDataScienceHandbook).*\n", | |
"\n", | |
"*The text is released under the [CC-BY-NC-ND license](https://creativecommons.org/licenses/by-nc-nd/3.0/us/legalcode), and code is released under the [MIT license](https://opensource.org/licenses/MIT). If you find this content useful, please consider supporting the work by [buying the book](http://shop.oreilly.com/product/0636920034919.do)!*" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "dYjjbg_aFBY2", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<!--NAVIGATION-->\n", | |
"< [Aggregations: Min, Max, and Everything In Between](02.04-Computation-on-arrays-aggregates.ipynb) | [Contents](Index.ipynb) | [Comparisons, Masks, and Boolean Logic](02.06-Boolean-Arrays-and-Masks.ipynb) >\n", | |
"\n", | |
"<a href=\"https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb\"><img align=\"left\" src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open in Colab\" title=\"Open and Execute in Google Colaboratory\"></a>\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "fRK1VLzMFBY3", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Computation on Arrays: Broadcasting" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "zP4gypXNFBY3", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"We saw in the previous section how NumPy's universal functions can be used to *vectorize* operations and thereby remove slow Python loops.\n", | |
"Another means of vectorizing operations is to use NumPy's *broadcasting* functionality.\n", | |
"Broadcasting is simply a set of rules for applying binary ufuncs (e.g., addition, subtraction, multiplication, etc.) on arrays of different sizes." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ie5v_4sPFBY4", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Introducing Broadcasting\n", | |
"\n", | |
"Recall that for arrays of the same size, binary operations are performed on an element-by-element basis:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "rOWEPbJTFBY5", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import numpy as np" | |
], | |
"execution_count": 1, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "pIxl4RyYFBY8", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
}, | |
"outputId": "91c7950d-c87a-473c-b805-f4b3f57261b6" | |
}, | |
"source": [ | |
"a = np.array([0, 1, 2])\n", | |
"b = np.array([5, 5, 5])\n", | |
"a + b" | |
], | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([5, 6, 7])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 2 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "agNOKBgZFBY_", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Broadcasting allows these types of binary operations to be performed on arrays of different sizes–for example, we can just as easily add a scalar (think of it as a zero-dimensional array) to an array:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "mQJ0uWwXFBZA", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
}, | |
"outputId": "f7425792-7e5d-4ca2-b9bf-4ac10ccfd69d" | |
}, | |
"source": [ | |
"a + 5" | |
], | |
"execution_count": 3, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([5, 6, 7])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 3 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "f6RgSvp4FBZD", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"We can think of this as an operation that stretches or duplicates the value ``5`` into the array ``[5, 5, 5]``, and adds the results.\n", | |
"The advantage of NumPy's broadcasting is that this duplication of values does not actually take place, but it is a useful mental model as we think about broadcasting.\n", | |
"\n", | |
"We can similarly extend this to arrays of higher dimension. Observe the result when we add a one-dimensional array to a two-dimensional array:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "gL-w_ZKvFBZD", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
}, | |
"outputId": "08914bd9-d036-4d2d-db02-1536d1254038" | |
}, | |
"source": [ | |
"M = np.ones((3, 3))\n", | |
"M" | |
], | |
"execution_count": 28, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[1., 1., 1.],\n", | |
" [1., 1., 1.],\n", | |
" [1., 1., 1.]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 28 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Hax4Lw-aFBZG", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 102 | |
}, | |
"outputId": "a090d800-2550-4b3a-99b6-859fba9ed434" | |
}, | |
"source": [ | |
"print('a.shape:', a.shape)\n", | |
"print('M.shape:', M.shape)\n", | |
"M + a" | |
], | |
"execution_count": 30, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"a.shape: (3,)\n", | |
"M.shape: (3, 3)\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[1., 2., 3.],\n", | |
" [1., 2., 3.],\n", | |
" [1., 2., 3.]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 30 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "osirkISgFBZJ", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Here the one-dimensional array ``a`` is stretched, or broadcast across the second dimension in order to match the shape of ``M``.\n", | |
"\n", | |
"While these examples are relatively easy to understand, more complicated cases can involve broadcasting of both arrays. Consider the following example:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "qrhdX32QFBZJ", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 85 | |
}, | |
"outputId": "5e582ff5-b5df-465c-9e90-d212e77bb1a7" | |
}, | |
"source": [ | |
"a = np.arange(3)\n", | |
"b = np.arange(3)[:, np.newaxis]\n", | |
"\n", | |
"print(a)\n", | |
"print(b)" | |
], | |
"execution_count": 6, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[0 1 2]\n", | |
"[[0]\n", | |
" [1]\n", | |
" [2]]\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "bptQYIv_FBZP", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
}, | |
"outputId": "ca0a400c-9c34-4318-fb17-89772a665a34" | |
}, | |
"source": [ | |
"a + b" | |
], | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[0, 1, 2],\n", | |
" [1, 2, 3],\n", | |
" [2, 3, 4]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 7 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "BVWsuBGRFBZR", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Just as before we stretched or broadcasted one value to match the shape of the other, here we've stretched *both* ``a`` and ``b`` to match a common shape, and the result is a two-dimensional array!\n", | |
"The geometry of these examples is visualized in the following figure (Code to produce this plot can be found in the [appendix](06.00-Figure-Code.ipynb#Broadcasting), and is adapted from source published in the [astroML](http://astroml.org) documentation. Used by permission)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "S1Hyk4l-FBZR", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"![Broadcasting Visual](https://github.com/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/figures/02.05-broadcasting.png?raw=1)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "1rj9nYLkFBZS", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"The light boxes represent the broadcasted values: again, this extra memory is not actually allocated in the course of the operation, but it can be useful conceptually to imagine that it is." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "HhvNM8lBFBZS", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Rules of Broadcasting\n", | |
"\n", | |
"Broadcasting in NumPy follows a strict set of rules to determine the interaction between the two arrays:\n", | |
"\n", | |
"- Rule 1: If the two arrays differ in their number of dimensions, the shape of the one with fewer dimensions is *padded* with ones on its leading (left) side.\n", | |
"- Rule 2: If the shape of the two arrays does not match in any dimension, the array with shape equal to 1 in that dimension is stretched to match the other shape.\n", | |
"- Rule 3: If in any dimension the sizes disagree and neither is equal to 1, an error is raised.\n", | |
"\n", | |
"To make these rules clear, let's consider a few examples in detail." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "8KxJDSewFBZS", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### Broadcasting example 1\n", | |
"\n", | |
"Let's look at adding a two-dimensional array to a one-dimensional array:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "gFrXombkFBZT", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"M = np.ones((2, 3))\n", | |
"a = np.arange(3)" | |
], | |
"execution_count": 8, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ahXZ3xLNFBZV", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Let's consider an operation on these two arrays. The shape of the arrays are\n", | |
"\n", | |
"- ``M.shape = (2, 3)``\n", | |
"- ``a.shape = (3,)``\n", | |
"\n", | |
"We see by rule 1 that the array ``a`` has fewer dimensions, so we pad it on the left with ones:\n", | |
"\n", | |
"- ``M.shape -> (2, 3)``\n", | |
"- ``a.shape -> (1, 3)``\n", | |
"\n", | |
"By rule 2, we now see that the first dimension disagrees, so we stretch this dimension to match:\n", | |
"\n", | |
"- ``M.shape -> (2, 3)``\n", | |
"- ``a.shape -> (2, 3)``\n", | |
"\n", | |
"The shapes match, and we see that the final shape will be ``(2, 3)``:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "ryjRqCuoFBZV", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 51 | |
}, | |
"outputId": "aa20f9a4-92b4-4550-857f-a06cc5bce4a0" | |
}, | |
"source": [ | |
"M + a" | |
], | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[1., 2., 3.],\n", | |
" [1., 2., 3.]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 9 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "oWCdnk-OFBZY", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### Broadcasting example 2\n", | |
"\n", | |
"Let's take a look at an example where both arrays need to be broadcast:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Zc8_q4Q_FBZY", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"a = np.arange(3).reshape((3, 1))\n", | |
"b = np.arange(3)" | |
], | |
"execution_count": 10, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "5NMEgPF7FBZa", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Again, we'll start by writing out the shape of the arrays:\n", | |
"\n", | |
"- ``a.shape = (3, 1)``\n", | |
"- ``b.shape = (3,)``\n", | |
"\n", | |
"Rule 1 says we must pad the shape of ``b`` with ones:\n", | |
"\n", | |
"- ``a.shape -> (3, 1)``\n", | |
"- ``b.shape -> (1, 3)``\n", | |
"\n", | |
"And rule 2 tells us that we upgrade each of these ones to match the corresponding size of the other array:\n", | |
"\n", | |
"- ``a.shape -> (3, 3)``\n", | |
"- ``b.shape -> (3, 3)``\n", | |
"\n", | |
"Because the result matches, these shapes are compatible. We can see this here:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "8dqQnU7FFBZb", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
}, | |
"outputId": "beb7236e-daff-4ad4-a047-fbb3dc17a494" | |
}, | |
"source": [ | |
"a + b" | |
], | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[0, 1, 2],\n", | |
" [1, 2, 3],\n", | |
" [2, 3, 4]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 11 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "u7m-zlXzFBZd", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### Broadcasting example 3\n", | |
"\n", | |
"Now let's take a look at an example in which the two arrays are not compatible:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "rcJcKIwcFBZd", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"M = np.ones((3, 2))\n", | |
"a = np.arange(3)" | |
], | |
"execution_count": 32, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Q7CmiN8vFBZf", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"This is just a slightly different situation than in the first example: the matrix ``M`` is transposed.\n", | |
"How does this affect the calculation? The shape of the arrays are\n", | |
"\n", | |
"- ``M.shape = (3, 2)``\n", | |
"- ``a.shape = (3,)``\n", | |
"\n", | |
"Again, rule 1 tells us that we must pad the shape of ``a`` with ones:\n", | |
"\n", | |
"- ``M.shape -> (3, 2)``\n", | |
"- ``a.shape -> (1, 3)``\n", | |
"\n", | |
"By rule 2, the first dimension of ``a`` is stretched to match that of ``M``:\n", | |
"\n", | |
"- ``M.shape -> (3, 2)``\n", | |
"- ``a.shape -> (3, 3)``\n", | |
"\n", | |
"Now we hit rule 3–the final shapes do not match, so these two arrays are incompatible, as we can observe by attempting this operation:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "BfPYkOQIFBZg", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 164 | |
}, | |
"outputId": "25d21f5b-4b52-4ad2-aed5-285b6cc4aa03" | |
}, | |
"source": [ | |
"M + a" | |
], | |
"execution_count": 13, | |
"outputs": [ | |
{ | |
"output_type": "error", | |
"ename": "ValueError", | |
"evalue": "ignored", | |
"traceback": [ | |
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-13-8cac1d547906>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mM\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (3,2) (3,) " | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "QRhUL0LPFBZh", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Note the potential confusion here: you could imagine making ``a`` and ``M`` compatible by, say, padding ``a``'s shape with ones on the right rather than the left.\n", | |
"But this is not how the broadcasting rules work!\n", | |
"That sort of flexibility might be useful in some cases, but it would lead to potential areas of ambiguity.\n", | |
"If right-side padding is what you'd like, you can do this explicitly by reshaping the array (we'll use the ``np.newaxis`` keyword introduced in [The Basics of NumPy Arrays](02.02-The-Basics-Of-NumPy-Arrays.ipynb)):" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "aQHKPucGFBZi", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 187 | |
}, | |
"outputId": "bcd654ca-7a77-44fc-9240-21ce8f9222bf" | |
}, | |
"source": [ | |
"a[:, np.newaxis].shape\n", | |
"print(a)\n", | |
"print(a[..., np.newaxis])\n", | |
"print(a[:, np.newaxis])\n", | |
"print(M)" | |
], | |
"execution_count": 38, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"[0 1 2]\n", | |
"[[0]\n", | |
" [1]\n", | |
" [2]]\n", | |
"[[0]\n", | |
" [1]\n", | |
" [2]]\n", | |
"[[1. 1.]\n", | |
" [1. 1.]\n", | |
" [1. 1.]]\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "D8H5Pr_MFBZk", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
}, | |
"outputId": "e2eac46f-efc9-42c4-d04f-aa94d267c019" | |
}, | |
"source": [ | |
"M + a[:, np.newaxis]" | |
], | |
"execution_count": 33, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[1., 1.],\n", | |
" [2., 2.],\n", | |
" [3., 3.]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 33 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Ys6LtfRRFBZm", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Also note that while we've been focusing on the ``+`` operator here, these broadcasting rules apply to *any* binary ``ufunc``.\n", | |
"For example, here is the ``logaddexp(a, b)`` function, which computes ``log(exp(a) + exp(b))`` with more precision than the naive approach:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "-dUQ8q2BFBZm", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
}, | |
"outputId": "75f19651-6243-4bda-dcfd-06f7ec64cab6" | |
}, | |
"source": [ | |
"np.logaddexp(M, a[:, np.newaxis])" | |
], | |
"execution_count": 39, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([[1.31326169, 1.31326169],\n", | |
" [1.69314718, 1.69314718],\n", | |
" [2.31326169, 2.31326169]])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 39 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "o7rUO5G9FBZo", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"For more information on the many available universal functions, refer to [Computation on NumPy Arrays: Universal Functions](02.03-Computation-on-arrays-ufuncs.ipynb)." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "EYsCVc-DFBZo", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"## Broadcasting in Practice" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Lo7FkKYLFBZo", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"Broadcasting operations form the core of many examples we'll see throughout this book.\n", | |
"We'll now take a look at a couple simple examples of where they can be useful." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XB4LDxe2FBZp", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### Centering an array" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "v3ag_QAYFBZp", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"In the previous section, we saw that ufuncs allow a NumPy user to remove the need to explicitly write slow Python loops. Broadcasting extends this ability.\n", | |
"One commonly seen example is when centering an array of data.\n", | |
"Imagine you have an array of 10 observations, each of which consists of 3 values.\n", | |
"Using the standard convention (see [Data Representation in Scikit-Learn](05.02-Introducing-Scikit-Learn.ipynb#Data-Representation-in-Scikit-Learn)), we'll store this in a $10 \\times 3$ array:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Xui30WEzFBZp", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"X = np.random.random((10, 3))" | |
], | |
"execution_count": 17, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "mhDnufoMFBZr", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"We can compute the mean of each feature using the ``mean`` aggregate across the first dimension:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "0Bp9a0oyFBZr", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
}, | |
"outputId": "5c0ac2aa-821f-4691-b43c-f03b3c768dbb" | |
}, | |
"source": [ | |
"Xmean = X.mean(0)\n", | |
"Xmean" | |
], | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([0.71510493, 0.51038896, 0.43654921])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 18 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "M0QXl0zOFBZt", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"And now we can center the ``X`` array by subtracting the mean (this is a broadcasting operation):" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "WDIa9AqFFBZu", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"X_centered = X - Xmean" | |
], | |
"execution_count": 21, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "rHPWxcFcFBZv", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"To double-check that we've done this correctly, we can check that the centered array has near zero mean:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "iIj97vYRFBZw", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
}, | |
"outputId": "e7c9be52-a5d5-4dcd-d402-fba1fe5d802f" | |
}, | |
"source": [ | |
"X_centered.mean(0)" | |
], | |
"execution_count": 23, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"array([ 1.66533454e-16, 5.55111512e-17, -1.11022302e-17])" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 23 | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "6xnFNmZPFBZy", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"To within machine precision, the mean is now zero." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "NsNPNvm0FBZz", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"### Plotting a two-dimensional function" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "XMnFk63BFBZz", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"One place that broadcasting is very useful is in displaying images based on two-dimensional functions.\n", | |
"If we want to define a function $z = f(x, y)$, broadcasting can be used to compute the function across the grid:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "Ao094HA1FBZ0", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"# x and y have 50 steps from 0 to 5\n", | |
"x = np.linspace(0, 5, 50)\n", | |
"y = np.linspace(0, 5, 50)[:, np.newaxis]\n", | |
"\n", | |
"z = np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)" | |
], | |
"execution_count": 24, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "KsDIWE_VFBZ1", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"We'll use Matplotlib to plot this two-dimensional array (these tools will be discussed in full in [Density and Contour Plots](04.04-Density-and-Contour-Plots.ipynb)):" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "KEm5v-eHFBZ2", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"%matplotlib inline\n", | |
"import matplotlib.pyplot as plt" | |
], | |
"execution_count": 25, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "SIeHgtZfFBZ3", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 269 | |
}, | |
"outputId": "43d2d270-523f-405b-febf-c0b109530bc7" | |
}, | |
"source": [ | |
"plt.imshow(z, origin='lower', extent=[0, 5, 0, 5],\n", | |
" cmap='viridis')\n", | |
"plt.colorbar();" | |
], | |
"execution_count": 26, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [], | |
"needs_background": "light" | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "eriMH8kcH2Pg", | |
"colab_type": "code", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 265 | |
}, | |
"outputId": "7b9fe415-f2c3-418f-d18a-2ed43a3839a7" | |
}, | |
"source": [ | |
"fig = plt.figure()\n", | |
"ax = fig.gca(projection='3d')\n", | |
"ax.plot_surface(x, y, z)" | |
], | |
"execution_count": 44, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<mpl_toolkits.mplot3d.art3d.Poly3DCollection at 0x7f5111a45780>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 44 | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"tags": [], | |
"needs_background": "light" | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Y3hWWBMlFBZ5", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"The result is a compelling visualization of the two-dimensional function." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "KOlug4qhFBZ5", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<!--NAVIGATION-->\n", | |
"< [Aggregations: Min, Max, and Everything In Between](02.04-Computation-on-arrays-aggregates.ipynb) | [Contents](Index.ipynb) | [Comparisons, Masks, and Boolean Logic](02.06-Boolean-Arrays-and-Masks.ipynb) >\n", | |
"\n", | |
"<a href=\"https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb\"><img align=\"left\" src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open in Colab\" title=\"Open and Execute in Google Colaboratory\"></a>\n" | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment