Added exercises
+143 −24 · 3 files changed
-
README.html+34 −8 -
README.ipynb+68 −7 -
README.rst+41 −9
@@ -34,7 +34,8 @@ is:</p> <p>Repository is at: <a class="reference external" href="https://github.com/rougier/numpy-100">https://github.com/rougier/numpy-100</a></p> <p>The corresponding <a class="reference external" href="https://github.com/rougier/numpy-100/blob/master/README.ipynb">IPython notebook</a> is available from the github repo, thanks to the <a class="reference external" href="https://github.com/esc/rst2ipynb">rst2ipynb</a> conversion tool by <a class="reference external" href="http://haenel.co">Valentin Haenel</a></p> -<p>Thanks to Michiaki Ariga, there is now a <a class="reference external" href="https://github.com/chezou/julia-100-exercises">Julia version</a>.</p> +<p>Thanks to Michiaki Ariga, there is now a +<a class="reference external" href="https://github.com/chezou/julia-100-exercises">Julia version</a>.</p> <div class="section" id="neophyte"> <h1>Neophyte</h1> <ol class="arabic"> @@ -257,16 +258,12 @@ point by point distances</p> <span class="keyword">print</span> <span class="name">G</span> </pre> </li> -<li><p class="first">Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3 -consecutive zeros interleaved between each value ?</p> +<li><p class="first">How to tell if a given 2D array has null columns ?</p> <pre class="code python literal-block"> <span class="comment"># Author: Warren Weckesser</span> -<span class="name">Z</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">array</span><span class="punctuation">([</span><span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">2</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">,</span><span class="literal number integer">4</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">])</span> -<span class="name">nz</span> <span class="operator">=</span> <span class="literal number integer">3</span> -<span class="name">Z0</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">zeros</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span> <span class="operator">+</span> <span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span><span class="operator">-</span><span class="literal number integer">1</span><span class="punctuation">)</span><span class="operator">*</span><span class="punctuation">(</span><span class="name">nz</span><span class="punctuation">))</span> -<span class="name">Z0</span><span class="punctuation">[::</span><span class="name">nz</span><span class="operator">+</span><span class="literal number integer">1</span><span class="punctuation">]</span> <span class="operator">=</span> <span class="name">Z</span> -<span class="keyword">print</span> <span class="name">Z0</span> +<span class="name">Z</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">random</span><span class="operator">.</span><span class="name">randint</span><span class="punctuation">(</span><span class="literal number integer">0</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">,(</span><span class="literal number integer">3</span><span class="punctuation">,</span><span class="literal number integer">10</span><span class="punctuation">))</span> +<span class="keyword">print</span> <span class="punctuation">(</span><span class="operator">~</span><span class="name">Z</span><span class="operator">.</span><span class="name">any</span><span class="punctuation">(</span><span class="name">axis</span><span class="operator">=</span><span class="literal number integer">0</span><span class="punctuation">))</span><span class="operator">.</span><span class="name">any</span><span class="punctuation">()</span> </pre> </li> <li><p class="first">Find the nearest value from a given value in an array</p> @@ -357,6 +354,35 @@ using a vector S of same size describing subset indices ?</p> <span class="keyword">print</span> <span class="name">D_means</span> </pre> </li> +<li><p class="first">Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3 +consecutive zeros interleaved between each value ?</p> +<pre class="code python literal-block"> +<span class="comment"># Author: Warren Weckesser</span> + +<span class="name">Z</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">array</span><span class="punctuation">([</span><span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">2</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">,</span><span class="literal number integer">4</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">])</span> +<span class="name">nz</span> <span class="operator">=</span> <span class="literal number integer">3</span> +<span class="name">Z0</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">zeros</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span> <span class="operator">+</span> <span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span><span class="operator">-</span><span class="literal number integer">1</span><span class="punctuation">)</span><span class="operator">*</span><span class="punctuation">(</span><span class="name">nz</span><span class="punctuation">))</span> +<span class="name">Z0</span><span class="punctuation">[::</span><span class="name">nz</span><span class="operator">+</span><span class="literal number integer">1</span><span class="punctuation">]</span> <span class="operator">=</span> <span class="name">Z</span> +<span class="keyword">print</span> <span class="name">Z0</span> +</pre> +</li> +<li><p class="first">Consider an array of dimension (5,5,3), how to mulitply it by an array with +dimensions (5,5) ?</p> +<pre class="code python literal-block"> +<span class="name">A</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">ones</span><span class="punctuation">((</span><span class="literal number integer">5</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">))</span> +<span class="name">B</span> <span class="operator">=</span> <span class="literal number integer">2</span><span class="operator">*</span><span class="name">np</span><span class="operator">.</span><span class="name">ones</span><span class="punctuation">((</span><span class="literal number integer">5</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">))</span> +<span class="keyword">print</span> <span class="name">A</span> <span class="operator">*</span> <span class="name">B</span><span class="punctuation">[:,:,</span><span class="name builtin pseudo">None</span><span class="punctuation">]</span> +</pre> +</li> +<li><p class="first">How to swap two rows of an array ?</p> +<pre class="code python literal-block"> +<span class="comment"># Author: Eelco Hoogendoorn</span> + +<span class="name">A</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">arange</span><span class="punctuation">(</span><span class="literal number integer">25</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">reshape</span><span class="punctuation">(</span><span class="literal number integer">5</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">)</span> +<span class="name">A</span><span class="punctuation">[[</span><span class="literal number integer">0</span><span class="punctuation">,</span><span class="literal number integer">1</span><span class="punctuation">]]</span> <span class="operator">=</span> <span class="name">A</span><span class="punctuation">[[</span><span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">0</span><span class="punctuation">]]</span> +<span class="keyword">print</span> <span class="name">A</span> +</pre> +</li> </ol> </div> <div class="section" id="craftsman"> @@ -662,8 +662,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3\n", - "consecutive zeros interleaved between each value ?\n" + "How to tell if a given 2D array has null columns ?\n" ] }, { @@ -672,11 +671,8 @@ "input": [ "# Author: Warren Weckesser\n", "\n", - "Z = np.array([1,2,3,4,5])\n", - "nz = 3\n", - "Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz))\n", - "Z0[::nz+1] = Z\n", - "print Z0" + "Z = np.random.randint(0,3,(3,10))\n", + "print (~Z.any(axis=0)).any()" ], "language": "python", "metadata": {}, @@ -880,6 +876,71 @@ "metadata": {}, "outputs": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3\n", + "consecutive zeros interleaved between each value ?\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Author: Warren Weckesser\n", + "\n", + "Z = np.array([1,2,3,4,5])\n", + "nz = 3\n", + "Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz))\n", + "Z0[::nz+1] = Z\n", + "print Z0" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider an array of dimension (5,5,3), how to mulitply it by an array\n", + "with dimensions (5,5) ?\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "A = np.ones((5,5,3))\n", + "B = 2*np.ones((5,5))\n", + "print A * B[:,:,None]" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How to swap two rows of an array ?\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Author: Eelco Hoogendoorn\n", + "\n", + "A = np.arange(25).reshape(5,5)\n", + "A[[0,1]] = A[[1,0]]\n", + "print A" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, { "cell_type": "heading", "level": 2, @@ -34,7 +34,8 @@ from the github repo, thanks to the `rst2ipynb <https://github.com/esc/rst2ipynb>`_ conversion tool by `Valentin Haenel <http://haenel.co>`_ -Thanks to Michiaki Ariga, there is now a `Julia version <https://github.com/chezou/julia-100-exercises>`_. +Thanks to Michiaki Ariga, there is now a +`Julia version <https://github.com/chezou/julia-100-exercises>`_. .. **Contents** @@ -319,19 +320,14 @@ Apprentice print G -9. Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3 - consecutive zeros interleaved between each value ? +9. How to tell if a given 2D array has null columns ? .. code-block:: python # Author: Warren Weckesser - Z = np.array([1,2,3,4,5]) - nz = 3 - Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz)) - Z0[::nz+1] = Z - print Z0 - + Z = np.random.randint(0,3,(3,10)) + print (~Z.any(axis=0)).any() 10. Find the nearest value from a given value in an array @@ -410,6 +406,7 @@ Journeyman n = len(np.unique(F)) print np.unique(I) + 6. Considering a four dimensions array, how to get sum over the last two axis at once ? .. code-block:: python @@ -435,6 +432,41 @@ Journeyman print D_means +8. Consider the vector [1, 2, 3, 4, 5], how to build a new vector with 3 + consecutive zeros interleaved between each value ? + + .. code-block:: python + + # Author: Warren Weckesser + + Z = np.array([1,2,3,4,5]) + nz = 3 + Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz)) + Z0[::nz+1] = Z + print Z0 + + +9. Consider an array of dimension (5,5,3), how to mulitply it by an array with + dimensions (5,5) ? + + .. code-block:: python + + A = np.ones((5,5,3)) + B = 2*np.ones((5,5)) + print A * B[:,:,None] + + +10. How to swap two rows of an array ? + + + .. code-block:: python + + # Author: Eelco Hoogendoorn + + A = np.arange(25).reshape(5,5) + A[[0,1]] = A[[1,0]] + print A + Craftsman =========