New exercise using nditer. And we're done, we've got 100 exercises \!

This commit is contained in:
Nicolas P. Rougier 2016-07-14 20:53:25 -05:00
parent f1059bd9c7
commit b91cb1b0c4
2 changed files with 22 additions and 1 deletions

View File

@ -511,6 +511,16 @@ point by point distances (★★☆)</p>
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">m</span><span class="punctuation">)</span>
</pre>
</li>
<li><p class="first">Considering two arrays with shape (1,3) and (3,1), how to compute their sum
using an iterator? (★★☆)</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">arange</span><span class="punctuation">(</span><span class="literal number integer">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">reshape</span><span class="punctuation">(</span><span class="literal number integer">3</span><span class="punctuation">,</span><span class="literal number integer">1</span><span class="punctuation">)</span>
<span class="name">B</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">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">reshape</span><span class="punctuation">(</span><span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">)</span>
<span class="name">it</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">nditer</span><span class="punctuation">([</span><span class="name">A</span><span class="punctuation">,</span><span class="name">B</span><span class="punctuation">,</span><span class="name builtin pseudo">None</span><span class="punctuation">]):</span>
<span class="keyword">for</span> <span class="name">x</span><span class="punctuation">,</span><span class="name">y</span><span class="punctuation">,</span><span class="name">z</span> <span class="operator word">in</span> <span class="name">it</span><span class="punctuation">:</span> <span class="name">z</span><span class="punctuation">[</span><span class="operator">...</span><span class="punctuation">]</span> <span class="operator">=</span> <span class="name">x</span> <span class="operator">+</span> <span class="name">y</span>
<span class="name">C</span> <span class="operator">=</span> <span class="name">it</span><span class="operator">.</span><span class="name">operands</span><span class="punctuation">[</span><span class="literal number integer">2</span><span class="punctuation">]</span>
</pre>
</li>
<li><p class="first">Create an array class that has a <cite>name</cite> attribute (★★☆)</p>
<pre class="code python literal-block">
<span class="keyword">class</span> <span class="name class">NamedArray</span><span class="punctuation">(</span><span class="name">np</span><span class="operator">.</span><span class="name">ndarray</span><span class="punctuation">):</span>

View File

@ -611,6 +611,17 @@ Thanks to Michiaki Ariga, there is now a
m = Z.flat[np.abs(Z - z).argmin()]
print(m)
#. Considering two arrays with shape (1,3) and (3,1), how to compute their sum
using an iterator? (★★☆)
.. code-block:: python
A = np.arange(3).reshape(3,1)
B = np.arange(3).reshape(1,3)
it = np.nditer([A,B,None]):
for x,y,z in it: z[...] = x + y
C = it.operands[2]
#. Create an array class that has a `name` attribute (★★☆)