Included exercises from Evgeni Burovski (@ev-br), close #7
This commit is contained in:
parent
275d8e4a29
commit
b7d801c3e2
56
README.html
56
README.html
@ -164,6 +164,18 @@ python -c <span class="literal string double">"import numpy; numpy.info(num
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Given a 1D array, negate all elements which are between 3 and 8, in place. (★☆☆)
|
||||
.. code-block:: python</p>
|
||||
<blockquote>
|
||||
<p># Author: Evgeni Burovski</p>
|
||||
<p>Z = np.arange(11)
|
||||
Z[(3 < Z) & (Z <= 8)] <a href="#id1"><span class="problematic" id="id2">*</span></a>= -1</p>
|
||||
<div class="system-message" id="id1">
|
||||
<p class="system-message-title">System Message: WARNING/2 (<tt class="docutils">README.rst</tt>, line 209); <em><a href="#id2">backlink</a></em></p>
|
||||
<p>Inline emphasis start-string without end-string.</p>
|
||||
</div>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first">Create a 5x5 matrix with row values ranging from 0 to 4 (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="name">Z</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="literal number integer">5</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">))</span>
|
||||
@ -187,13 +199,21 @@ array (★☆☆)</p>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Create a random vector of size 10 and sort it (★★☆)</p>
|
||||
<li><p class="first">Create a random vector of size 10 and sort it (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<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">random</span><span class="punctuation">(</span><span class="literal number integer">10</span><span class="punctuation">)</span>
|
||||
<span class="name">Z</span><span class="operator">.</span><span class="name">sort</span><span class="punctuation">()</span>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">How to sum a small array faster than np.sum ? (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="comment single"># Author: Evgeni Burovski</span>
|
||||
|
||||
<span class="name">Z</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">10</span><span class="punctuation">)</span>
|
||||
<span class="name">np</span><span class="operator">.</span><span class="name">add</span><span class="operator">.</span><span class="name">reduce</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Consider two random array A anb B, check if they are equal (★★☆)</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">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">2</span><span class="punctuation">,</span><span class="literal number integer">5</span><span class="punctuation">)</span>
|
||||
@ -236,6 +256,16 @@ them to polar coordinates (★★☆)</p>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Given two arrays, X and Y, construct the Cauchy matrix C (Cij = 1/(xi - yj))</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="comment single"># Author: Evgeni Burovski</span>
|
||||
|
||||
<span class="name">X</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">8</span><span class="punctuation">)</span>
|
||||
<span class="name">Y</span> <span class="operator">=</span> <span class="name">X</span> <span class="operator">+</span> <span class="literal number float">0.5</span>
|
||||
<span class="name">C</span> <span class="operator">=</span> <span class="literal number float">1.0</span> <span class="operator">/</span> <span class="name">np</span><span class="operator">.</span><span class="name">subtract</span><span class="operator">.</span><span class="name">outer</span><span class="punctuation">(</span><span class="name">X</span><span class="punctuation">,</span> <span class="name">Y</span><span class="punctuation">)</span>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">np</span><span class="operator">.</span><span class="name">linalg</span><span class="operator">.</span><span class="name">det</span><span class="punctuation">(</span><span class="name">C</span><span class="punctuation">))</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Print the minimum and maximum representable value for each numpy scalar type (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="keyword">for</span> <span class="name">dtype</span> <span class="operator word">in</span> <span class="punctuation">[</span><span class="name">np</span><span class="operator">.</span><span class="name">int8</span><span class="punctuation">,</span> <span class="name">np</span><span class="operator">.</span><span class="name">int32</span><span class="punctuation">,</span> <span class="name">np</span><span class="operator">.</span><span class="name">int64</span><span class="punctuation">]:</span>
|
||||
@ -254,13 +284,6 @@ them to polar coordinates (★★☆)</p>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">How to print all the values of an array ? (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="name">np</span><span class="operator">.</span><span class="name">set_printoptions</span><span class="punctuation">(</span><span class="name">threshold</span><span class="operator">=</span><span class="name">np</span><span class="operator">.</span><span class="name">nan</span><span class="punctuation">)</span>
|
||||
<span class="name">Z</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="literal number integer">25</span><span class="punctuation">,</span><span class="literal number integer">25</span><span class="punctuation">))</span>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">How to find the closest value (to a given scalar) in an array ? (★★☆)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="name">Z</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">100</span><span class="punctuation">)</span>
|
||||
@ -706,7 +729,6 @@ How to compute the sum of of the p matrix products at once ? (result has shape (
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">How to get the n largest values of an array (★★★)</p>
|
||||
<blockquote>
|
||||
<pre class="code python literal-block">
|
||||
<span class="name">Z</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">10000</span><span class="punctuation">)</span>
|
||||
<span class="name">np</span><span class="operator">.</span><span class="name">random</span><span class="operator">.</span><span class="name">shuffle</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">)</span>
|
||||
@ -718,7 +740,6 @@ How to compute the sum of of the p matrix products at once ? (result has shape (
|
||||
<span class="comment single"># Fast</span>
|
||||
<span class="keyword">print</span> <span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">[</span><span class="name">np</span><span class="operator">.</span><span class="name">argpartition</span><span class="punctuation">(</span><span class="operator">-</span><span class="name">Z</span><span class="punctuation">,</span><span class="name">n</span><span class="punctuation">)[:</span><span class="name">n</span><span class="punctuation">]])</span>
|
||||
</pre>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first">Given an arbitrary number of vectors, build the cartesian product (every
|
||||
combinations of every item) (★★★)</p>
|
||||
@ -846,6 +867,21 @@ equidistant samples (★★★) ?</p>
|
||||
<span class="name">y_int</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">interp</span><span class="punctuation">(</span><span class="name">r_int</span><span class="punctuation">,</span> <span class="name">r</span><span class="punctuation">,</span> <span class="name">y</span><span class="punctuation">)</span>
|
||||
</pre>
|
||||
</li>
|
||||
<li><p class="first">Given an integer n and a 2D array X, select from X the rows which can be
|
||||
interpreted as draws from a multinomial distribution with n degrees, i.e.,
|
||||
the rows which only contain integers and which sum to n. (★★★)</p>
|
||||
<pre class="code python literal-block">
|
||||
<span class="comment single"># Author: Evgeni Burovski</span>
|
||||
|
||||
<span class="name">X</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">asarray</span><span class="punctuation">([[</span><span class="literal number float">1.0</span><span class="punctuation">,</span> <span class="literal number float">0.0</span><span class="punctuation">,</span> <span class="literal number float">3.0</span><span class="punctuation">,</span> <span class="literal number float">8.0</span><span class="punctuation">],</span>
|
||||
<span class="punctuation">[</span><span class="literal number float">2.0</span><span class="punctuation">,</span> <span class="literal number float">0.0</span><span class="punctuation">,</span> <span class="literal number float">1.0</span><span class="punctuation">,</span> <span class="literal number float">1.0</span><span class="punctuation">],</span>
|
||||
<span class="punctuation">[</span><span class="literal number float">1.5</span><span class="punctuation">,</span> <span class="literal number float">2.5</span><span class="punctuation">,</span> <span class="literal number float">1.0</span><span class="punctuation">,</span> <span class="literal number float">0.0</span><span class="punctuation">]])</span>
|
||||
<span class="name">n</span> <span class="operator">=</span> <span class="literal number integer">4</span>
|
||||
<span class="name">M</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">logical_and</span><span class="operator">.</span><span class="name">reduce</span><span class="punctuation">(</span><span class="name">np</span><span class="operator">.</span><span class="name">mod</span><span class="punctuation">(</span><span class="name">X</span><span class="punctuation">,</span> <span class="literal number integer">1</span><span class="punctuation">)</span> <span class="operator">==</span> <span class="literal number integer">0</span><span class="punctuation">,</span> <span class="name">axis</span><span class="operator">=-</span><span class="literal number integer">1</span><span class="punctuation">)</span>
|
||||
<span class="name">M</span> <span class="operator">&=</span> <span class="punctuation">(</span><span class="name">X</span><span class="operator">.</span><span class="name">sum</span><span class="punctuation">(</span><span class="name">axis</span><span class="operator">=-</span><span class="literal number integer">1</span><span class="punctuation">)</span> <span class="operator">==</span> <span class="name">n</span><span class="punctuation">)</span>
|
||||
<span class="keyword">print</span><span class="punctuation">(</span><span class="name">X</span><span class="punctuation">[</span><span class="name">M</span><span class="punctuation">])</span>
|
||||
</pre>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</body>
|
||||
|
50
README.rst
50
README.rst
@ -201,6 +201,14 @@ Thanks to Michiaki Ariga, there is now a
|
||||
Z = np.dot(np.ones((5,3)), np.ones((3,2)))
|
||||
print(Z)
|
||||
|
||||
#. Given a 1D array, negate all elements which are between 3 and 8, in place. (★☆☆)
|
||||
.. code-block:: python
|
||||
|
||||
# Author: Evgeni Burovski
|
||||
|
||||
Z = np.arange(11)
|
||||
Z[(3 < Z) & (Z <= 8)] *= -1
|
||||
|
||||
|
||||
#. Create a 5x5 matrix with row values ranging from 0 to 4 (★★☆)
|
||||
|
||||
@ -231,7 +239,7 @@ Thanks to Michiaki Ariga, there is now a
|
||||
print(Z)
|
||||
|
||||
|
||||
#. Create a random vector of size 10 and sort it (★★☆)
|
||||
#. Create a random vector of size 10 and sort it (★★☆)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@ -240,6 +248,16 @@ Thanks to Michiaki Ariga, there is now a
|
||||
print(Z)
|
||||
|
||||
|
||||
#. How to sum a small array faster than np.sum ? (★★☆)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Author: Evgeni Burovski
|
||||
|
||||
Z = np.arange(10)
|
||||
np.add.reduce(Z)
|
||||
|
||||
|
||||
#. Consider two random array A anb B, check if they are equal (★★☆)
|
||||
|
||||
.. code-block:: python
|
||||
@ -293,6 +311,18 @@ Thanks to Michiaki Ariga, there is now a
|
||||
print(Z)
|
||||
|
||||
|
||||
#. Given two arrays, X and Y, construct the Cauchy matrix C (Cij = 1/(xi - yj))
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Author: Evgeni Burovski
|
||||
|
||||
X = np.arange(8)
|
||||
Y = X + 0.5
|
||||
C = 1.0 / np.subtract.outer(X, Y)
|
||||
print(np.linalg.det(C))
|
||||
|
||||
|
||||
#. Print the minimum and maximum representable value for each numpy scalar type (★★☆)
|
||||
|
||||
.. code-block:: python
|
||||
@ -920,6 +950,7 @@ Thanks to Michiaki Ariga, there is now a
|
||||
print(U)
|
||||
|
||||
|
||||
|
||||
#. Convert a vector of ints into a matrix binary representation (★★★)
|
||||
|
||||
.. code-block:: python
|
||||
@ -981,3 +1012,20 @@ Thanks to Michiaki Ariga, there is now a
|
||||
r_int = np.linspace(0, r.max(), 200) # regular spaced path
|
||||
x_int = np.interp(r_int, r, x) # integrate path
|
||||
y_int = np.interp(r_int, r, y)
|
||||
|
||||
|
||||
#. Given an integer n and a 2D array X, select from X the rows which can be
|
||||
interpreted as draws from a multinomial distribution with n degrees, i.e.,
|
||||
the rows which only contain integers and which sum to n. (★★★)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Author: Evgeni Burovski
|
||||
|
||||
X = np.asarray([[1.0, 0.0, 3.0, 8.0],
|
||||
[2.0, 0.0, 1.0, 1.0],
|
||||
[1.5, 2.5, 1.0, 0.0]])
|
||||
n = 4
|
||||
M = np.logical_and.reduce(np.mod(X, 1) == 0, axis=-1)
|
||||
M &= (X.sum(axis=-1) == n)
|
||||
print(X[M])
|
||||
|
Loading…
Reference in New Issue
Block a user