Added exercises

This commit is contained in:
Nicolas Rougier 2014-06-23 09:32:51 +02:00
parent 3a04802449
commit 8647fc74fd
3 changed files with 143 additions and 24 deletions

View File

@ -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">

View File

@ -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,

View File

@ -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
=========