<p>The corresponding <aclass="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 <aclass="reference external"href="https://github.com/esc/rst2ipynb">rst2ipynb</a> conversion tool by <aclass="reference external"href="http://haenel.co">Valentin Haenel</a></p>
<li><pclass="first">Create a null vector of size 10</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<li><pclass="first">Create a null vector of size 10 but the fifth value which is 1</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="literal number integer">4</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="literal number integer">1</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">50</span><spanclass="punctuation">)</span>
<li><pclass="first">Create a 3x3 matrix with values ranging from 0 to 8</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">9</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<li><pclass="first">Find indices of non-zero elements from [1,2,0,0,4,0]</p>
<preclass="code python literal-block">
<spanclass="name">nz</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">nonzero</span><spanclass="punctuation">([</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">])</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">eye</span><spanclass="punctuation">(</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">diag</span><spanclass="punctuation">(</span><spanclass="literal number integer">1</span><spanclass="operator">+</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">4</span><spanclass="punctuation">),</span><spanclass="name">k</span><spanclass="operator">=-</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">((</span><spanclass="literal number integer">8</span><spanclass="punctuation">,</span><spanclass="literal number integer">8</span><spanclass="punctuation">),</span><spanclass="name">dtype</span><spanclass="operator">=</span><spanclass="name builtin">int</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">::</span><spanclass="literal number integer">2</span><spanclass="punctuation">,::</span><spanclass="literal number integer">2</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="literal number integer">1</span>
<spanclass="name">Z</span><spanclass="punctuation">[::</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">::</span><spanclass="literal number integer">2</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="literal number integer">1</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<li><pclass="first">Create a checkerboard 8x8 matrix using the tile function</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">tile</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">array</span><spanclass="punctuation">([[</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">],[</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]]),</span><spanclass="punctuation">(</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">))</span>
<li><pclass="first">Normalize a 5x5 random matrix (between 0 and 1)</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">))</span>
<li><pclass="first">Multiply a 5x3 matrix by a 3x2 matrix (real matrix product)</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">dot</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">((</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">)),</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">((</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">)))</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">((</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">))</span>
<spanclass="name">Z</span><spanclass="operator">+=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">5</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">linspace</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">12</span><spanclass="punctuation">,</span><spanclass="name">endpoint</span><spanclass="operator">=</span><spanclass="name builtin pseudo">True</span><spanclass="punctuation">)[</span><spanclass="literal number integer">1</span><spanclass="punctuation">:</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">A</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">)</span>
<spanclass="name">B</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">(</span><spanclass="literal number integer">30</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="literal number integer">1</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">X</span><spanclass="punctuation">,</span><spanclass="name">Y</span><spanclass="operator">=</span><spanclass="name">Z</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">0</span><spanclass="punctuation">],</span><spanclass="name">Z</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span>
<spanclass="name">R</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">sqrt</span><spanclass="punctuation">(</span><spanclass="name">X</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="operator">+</span><spanclass="name">Y</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">argmax</span><spanclass="punctuation">()]</span><spanclass="operator">=</span><spanclass="literal number integer">0</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">((</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">),</span><spanclass="punctuation">[(</span><spanclass="literal string">'x'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">),(</span><spanclass="literal string">'y'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">)])</span>
<spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="literal string">'x'</span><spanclass="punctuation">],</span><spanclass="name">Z</span><spanclass="punctuation">[</span><spanclass="literal string">'y'</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">meshgrid</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">linspace</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">),</span>
<spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">linspace</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="punctuation">[</span><spanclass="punctuation">(</span><spanclass="literal string">'position'</span><spanclass="punctuation">,</span><spanclass="punctuation">[</span><spanclass="punctuation">(</span><spanclass="literal string">'x'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">),</span>
<spanclass="punctuation">(</span><spanclass="literal string">'y'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">)]),</span>
<spanclass="punctuation">(</span><spanclass="literal string">'color'</span><spanclass="punctuation">,</span><spanclass="punctuation">[</span><spanclass="punctuation">(</span><spanclass="literal string">'r'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">),</span>
<spanclass="punctuation">(</span><spanclass="literal string">'g'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">),</span>
<spanclass="punctuation">(</span><spanclass="literal string">'b'</span><spanclass="punctuation">,</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">)])])</span>
<li><pclass="first">Consider a random vector with shape (100,2) representing coordinates, find
point by point distances</p>
<preclass="code python literal-block">
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">X</span><spanclass="punctuation">,</span><spanclass="name">Y</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">atleast_2d</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]),</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">atleast_2d</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">1</span><spanclass="punctuation">])</span>
<spanclass="name">D</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">sqrt</span><spanclass="punctuation">(</span><spanclass="punctuation">(</span><spanclass="name">X</span><spanclass="operator">-</span><spanclass="name">X</span><spanclass="operator">.</span><spanclass="name">T</span><spanclass="punctuation">)</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="name">Y</span><spanclass="operator">-</span><spanclass="name">Y</span><spanclass="operator">.</span><spanclass="name">T</span><spanclass="punctuation">)</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="punctuation">((</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">X</span><spanclass="punctuation">,</span><spanclass="name">Y</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">meshgrid</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">linspace</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">),</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">linspace</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<spanclass="name">sigma</span><spanclass="punctuation">,</span><spanclass="name">mu</span><spanclass="operator">=</span><spanclass="literal number float">1.0</span><spanclass="punctuation">,</span><spanclass="literal number float">0.0</span>
<spanclass="name">G</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">exp</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="punctuation">(</span><spanclass="punctuation">(</span><spanclass="name">D</span><spanclass="operator">-</span><spanclass="name">mu</span><spanclass="punctuation">)</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="operator">/</span><spanclass="punctuation">(</span><spanclass="literal number float">2.0</span><spanclass="operator">*</span><spanclass="name">sigma</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span><spanclass="punctuation">)</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,(</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<spanclass="keyword">print</span><spanclass="punctuation">(</span><spanclass="operator">~</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">any</span><spanclass="punctuation">(</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">0</span><spanclass="punctuation">))</span><spanclass="operator">.</span><spanclass="name">any</span><spanclass="punctuation">()</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">uniform</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">z</span><spanclass="operator">=</span><spanclass="literal number float">0.5</span>
<spanclass="keyword">for</span><spanclass="name">x</span><spanclass="operator word">in</span><spanclass="name builtin">xrange</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">):</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">fromiter</span><spanclass="punctuation">(</span><spanclass="name">generate</span><spanclass="punctuation">(),</span><spanclass="name">dtype</span><spanclass="operator">=</span><spanclass="name builtin">float</span><spanclass="punctuation">,</span><spanclass="name">count</span><spanclass="operator">=-</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<li><pclass="first">Consider a given vector, how to add 1 to each element indexed by a second
vector (be careful with repeated indices) ?</p>
<preclass="code python literal-block">
<spanclass="comment"># Author: Brett Olsen</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">)</span>
<spanclass="name">I</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="name builtin">len</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">),</span><spanclass="literal number integer">20</span><spanclass="punctuation">)</span>
<li><pclass="first">How to accumulate elements of a vector (X) to an array (F) based on an index
list (I) ?</p>
<preclass="code python literal-block">
<spanclass="comment"># Author: Alan G Isaac</span>
<spanclass="name">X</span><spanclass="operator">=</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">6</span><spanclass="punctuation">]</span>
<spanclass="name">I</span><spanclass="operator">=</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">9</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span>
<spanclass="name">w</span><spanclass="punctuation">,</span><spanclass="name">h</span><spanclass="operator">=</span><spanclass="literal number integer">16</span><spanclass="punctuation">,</span><spanclass="literal number integer">16</span>
<spanclass="name">I</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,(</span><spanclass="name">h</span><spanclass="punctuation">,</span><spanclass="name">w</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span><spanclass="operator">.</span><spanclass="name">astype</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ubyte</span><spanclass="punctuation">)</span>
<spanclass="name">F</span><spanclass="operator">=</span><spanclass="name">I</span><spanclass="punctuation">[</span><spanclass="operator">...</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span><spanclass="operator">*</span><spanclass="literal number integer">256</span><spanclass="operator">*</span><spanclass="literal number integer">256</span><spanclass="operator">+</span><spanclass="name">I</span><spanclass="punctuation">[</span><spanclass="operator">...</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span><spanclass="operator">*</span><spanclass="literal number integer">256</span><spanclass="operator">+</span><spanclass="name">I</span><spanclass="punctuation">[</span><spanclass="operator">...</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">]</span>
<li><pclass="first">Considering a four dimensions array, how to get sum over the last two axis at once ?</p>
<preclass="code python literal-block">
<spanclass="name">A</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">))</span>
<spanclass="name builtin">sum</span><spanclass="operator">=</span><spanclass="name">A</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="name">A</span><spanclass="operator">.</span><spanclass="name">shape</span><spanclass="punctuation">[:</span><spanclass="operator">-</span><spanclass="literal number integer">2</span><spanclass="punctuation">]</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">,))</span><spanclass="operator">.</span><spanclass="name">sum</span><spanclass="punctuation">(</span><spanclass="name">axis</span><spanclass="operator">=-</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">D</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">uniform</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">100</span><spanclass="punctuation">)</span>
<spanclass="name">S</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">100</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">array</span><spanclass="punctuation">([</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">])</span>
<spanclass="name">nz</span><spanclass="operator">=</span><spanclass="literal number integer">3</span>
<spanclass="name">Z0</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">zeros</span><spanclass="punctuation">(</span><spanclass="name builtin">len</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">)</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="name builtin">len</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">)</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span><spanclass="operator">*</span><spanclass="punctuation">(</span><spanclass="name">nz</span><spanclass="punctuation">))</span>
<spanclass="name">Z0</span><spanclass="punctuation">[::</span><spanclass="name">nz</span><spanclass="operator">+</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="name">Z</span>
<li><pclass="first">Consider an array of dimension (5,5,3), how to mulitply it by an array with
dimensions (5,5) ?</p>
<preclass="code python literal-block">
<spanclass="name">A</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">((</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">B</span><spanclass="operator">=</span><spanclass="literal number integer">2</span><spanclass="operator">*</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">((</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">))</span>
<spanclass="name">A</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">25</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">)</span>
<spanclass="name">A</span><spanclass="punctuation">[[</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]]</span><spanclass="operator">=</span><spanclass="name">A</span><spanclass="punctuation">[[</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]]</span>
<spanclass="name">shape</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">a</span><spanclass="operator">.</span><spanclass="name">size</span><spanclass="operator">-</span><spanclass="name">window</span><spanclass="operator">+</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="name">window</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">rolling</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">10</span><spanclass="punctuation">),</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<spanclass="name">faces</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">100</span><spanclass="punctuation">,(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">F</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">roll</span><spanclass="punctuation">(</span><spanclass="name">faces</span><spanclass="operator">.</span><spanclass="name">repeat</span><spanclass="punctuation">(</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">),</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">F</span><spanclass="operator">=</span><spanclass="name">F</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="name builtin">len</span><spanclass="punctuation">(</span><spanclass="name">F</span><spanclass="punctuation">)</span><spanclass="operator">*</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span>
<spanclass="name">F</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">sort</span><spanclass="punctuation">(</span><spanclass="name">F</span><spanclass="punctuation">,</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">C</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">bincount</span><spanclass="punctuation">([</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">6</span><spanclass="punctuation">])</span>
<li><pclass="first">How to compute averages using a sliding window over an array ?</p>
<preclass="code python literal-block">
<spanclass="comment"># Author: Jaime Fernández del Río</span>
<spanclass="keyword">def</span><spanclass="name function">moving_average</span><spanclass="punctuation">(</span><spanclass="name">a</span><spanclass="punctuation">,</span><spanclass="name">n</span><spanclass="operator">=</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span><spanclass="punctuation">:</span>
<spanclass="keyword">return</span><spanclass="name">ret</span><spanclass="punctuation">[</span><spanclass="name">n</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">:]</span><spanclass="operator">/</span><spanclass="name">n</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">20</span><spanclass="punctuation">)</span>
<spanclass="keyword">print</span><spanclass="name">moving_average</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">,</span><spanclass="name">n</span><spanclass="operator">=</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">E</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">logical_and</span><spanclass="operator">.</span><spanclass="name">reduce</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">1</span><spanclass="punctuation">:]</span><spanclass="operator">==</span><spanclass="name">Z</span><spanclass="punctuation">[:,:</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">],</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">I</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">array</span><spanclass="punctuation">([</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">15</span><spanclass="punctuation">,</span><spanclass="literal number integer">16</span><spanclass="punctuation">,</span><spanclass="literal number integer">32</span><spanclass="punctuation">,</span><spanclass="literal number integer">64</span><spanclass="punctuation">,</span><spanclass="literal number integer">128</span><spanclass="punctuation">])</span>
<spanclass="name">B</span><spanclass="operator">=</span><spanclass="punctuation">((</span><spanclass="name">I</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span><spanclass="operator">&</span><spanclass="punctuation">(</span><spanclass="literal number integer">2</span><spanclass="operator">**</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">8</span><spanclass="punctuation">)))</span><spanclass="operator">!=</span><spanclass="literal number integer">0</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">astype</span><spanclass="punctuation">(</span><spanclass="name builtin">int</span><spanclass="punctuation">)</span>
<spanclass="keyword">print</span><spanclass="name">B</span><spanclass="punctuation">[:,::</span><spanclass="operator">-</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span>
<spanclass="comment"># Author: Daniel T. McDonald</span>
<spanclass="name">I</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">array</span><spanclass="punctuation">([</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">,</span><spanclass="literal number integer">15</span><spanclass="punctuation">,</span><spanclass="literal number integer">16</span><spanclass="punctuation">,</span><spanclass="literal number integer">32</span><spanclass="punctuation">,</span><spanclass="literal number integer">64</span><spanclass="punctuation">,</span><spanclass="literal number integer">128</span><spanclass="punctuation">],</span><spanclass="name">dtype</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">uint8</span><spanclass="punctuation">)</span>
<spanclass="keyword">print</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">unpackbits</span><spanclass="punctuation">(</span><spanclass="name">I</span><spanclass="punctuation">[:,</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">newaxis</span><spanclass="punctuation">],</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">L</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">T</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">sum</span><spanclass="punctuation">(</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">U</span><spanclass="operator">=</span><spanclass="operator">-</span><spanclass="punctuation">((</span><spanclass="name">P0</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span><spanclass="operator">-</span><spanclass="name">p</span><spanclass="punctuation">[</span><spanclass="literal number integer">0</span><spanclass="punctuation">])</span><spanclass="operator">*</span><spanclass="name">T</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="name">P0</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span><spanclass="operator">-</span><spanclass="name">p</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">])</span><spanclass="operator">*</span><spanclass="name">T</span><spanclass="punctuation">[:,</span><spanclass="literal number integer">1</span><spanclass="punctuation">])</span><spanclass="operator">/</span><spanclass="name">L</span>
<spanclass="name">U</span><spanclass="operator">=</span><spanclass="name">U</span><spanclass="operator">.</span><spanclass="name">reshape</span><spanclass="punctuation">(</span><spanclass="name builtin">len</span><spanclass="punctuation">(</span><spanclass="name">U</span><spanclass="punctuation">),</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="keyword">return</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">sqrt</span><spanclass="punctuation">((</span><spanclass="name">D</span><spanclass="operator">**</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">sum</span><spanclass="punctuation">(</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="punctuation">))</span>
<spanclass="name">P0</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">uniform</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">100</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">P1</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">uniform</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">100</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">p</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">uniform</span><spanclass="punctuation">(</span><spanclass="operator">-</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<spanclass="name">shape</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">)</span>
<spanclass="name">position</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">)</span>
<spanclass="name">Z_start</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">P</span><spanclass="operator">-</span><spanclass="name">Rs</span><spanclass="operator">//</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span>
<spanclass="name">Z_stop</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">P</span><spanclass="operator">+</span><spanclass="name">Rs</span><spanclass="operator">//</span><spanclass="literal number integer">2</span><spanclass="punctuation">)</span><spanclass="operator">+</span><spanclass="name">Rs</span><spanclass="operator">%</span><spanclass="literal number integer">2</span>
<spanclass="name">R_start</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">R_start</span><spanclass="operator">-</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">minimum</span><spanclass="punctuation">(</span><spanclass="name">Z_start</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">))</span><spanclass="operator">.</span><spanclass="name">tolist</span><spanclass="punctuation">()</span>
<spanclass="name">Z_start</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">maximum</span><spanclass="punctuation">(</span><spanclass="name">Z_start</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">))</span><spanclass="operator">.</span><spanclass="name">tolist</span><spanclass="punctuation">()</span>
<spanclass="name">R_stop</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">maximum</span><spanclass="punctuation">(</span><spanclass="name">R_start</span><spanclass="punctuation">,</span><spanclass="punctuation">(</span><spanclass="name">R_stop</span><spanclass="operator">-</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">maximum</span><spanclass="punctuation">(</span><spanclass="name">Z_stop</span><spanclass="operator">-</span><spanclass="name">Zs</span><spanclass="punctuation">,</span><spanclass="literal number integer">0</span><spanclass="punctuation">)))</span><spanclass="operator">.</span><spanclass="name">tolist</span><spanclass="punctuation">()</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">arange</span><spanclass="punctuation">(</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">15</span><spanclass="punctuation">,</span><spanclass="name">dtype</span><spanclass="operator">=</span><spanclass="name">uint32</span><spanclass="punctuation">)</span>
<spanclass="name">R</span><spanclass="operator">=</span><spanclass="name">stride_tricks</span><spanclass="operator">.</span><spanclass="name">as_strided</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">,(</span><spanclass="literal number integer">11</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">),(</span><spanclass="literal number integer">4</span><spanclass="punctuation">,</span><spanclass="literal number integer">4</span><spanclass="punctuation">))</span>
<li><pclass="first">Consider two arrays A and B of shape (8,3) and (2,2). How to find rows of A
that contain elements of each row of B regardless of the order of the elements
in B ?</p>
<preclass="code python literal-block">
<spanclass="comment"># Author: Gabe Schwartz</span>
<spanclass="name">A</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,(</span><spanclass="literal number integer">8</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">B</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,(</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">))</span>
<spanclass="name">rows</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="name">C</span><spanclass="operator">.</span><spanclass="name">sum</span><spanclass="punctuation">(</span><spanclass="name">axis</span><spanclass="operator">=</span><spanclass="punctuation">(</span><spanclass="literal number integer">1</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span><spanclass="operator">>=</span><spanclass="name">B</span><spanclass="operator">.</span><spanclass="name">shape</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">])</span><spanclass="operator">.</span><spanclass="name">nonzero</span><spanclass="punctuation">()[</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">,(</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">))</span>
<spanclass="name">n</span><spanclass="operator">=</span><spanclass="literal number integer">3</span>
<spanclass="name">i</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">shape</span><spanclass="punctuation">[</span><spanclass="literal number integer">0</span><spanclass="punctuation">]</span><spanclass="operator">-</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<spanclass="name">j</span><spanclass="operator">=</span><spanclass="literal number integer">1</span><spanclass="operator">+</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">shape</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">]</span><spanclass="operator">-</span><spanclass="literal number integer">3</span><spanclass="punctuation">)</span>
<spanclass="name">S</span><spanclass="operator">=</span><spanclass="name">symetric</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">10</span><spanclass="punctuation">,(</span><spanclass="literal number integer">5</span><spanclass="punctuation">,</span><spanclass="literal number integer">5</span><spanclass="punctuation">)))</span>
<spanclass="name">S</span><spanclass="punctuation">[</span><spanclass="literal number integer">2</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">]</span><spanclass="operator">=</span><spanclass="literal number integer">42</span>
<li><pclass="first">Consider a set of p matrices wich shape (n,n) and a set of p vectors with shape (n,1).
How to compute the sum of of the p matrix products at once ? (result has shape (n,1))</p>
<preclass="code python literal-block">
<spanclass="comment"># Author: Stéfan van der Walt</span>
<spanclass="name">p</span><spanclass="punctuation">,</span><spanclass="name">n</span><spanclass="operator">=</span><spanclass="literal number integer">10</span><spanclass="punctuation">,</span><spanclass="literal number integer">20</span>
<spanclass="name">V</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ones</span><spanclass="punctuation">((</span><spanclass="name">p</span><spanclass="punctuation">,</span><spanclass="name">n</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">))</span>
<spanclass="name">S</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">tensordot</span><spanclass="punctuation">(</span><spanclass="name">M</span><spanclass="punctuation">,</span><spanclass="name">V</span><spanclass="punctuation">,</span><spanclass="name">axes</span><spanclass="operator">=</span><spanclass="punctuation">[[</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">],</span><spanclass="punctuation">[</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">1</span><spanclass="punctuation">]])</span>
<li><pclass="first">Given a two dimensional array, how to extract unique rows ?</p>
<divclass="note">
<pclass="first admonition-title">Note</p>
<pclass="last">See <aclass="reference external"href="http://stackoverflow.com/questions/16970982/find-unique-rows-in-numpy-array/">stackoverflow</a> for explanations.</p>
<spanclass="name">Z</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">random</span><spanclass="operator">.</span><spanclass="name">randint</span><spanclass="punctuation">(</span><spanclass="literal number integer">0</span><spanclass="punctuation">,</span><spanclass="literal number integer">2</span><spanclass="punctuation">,(</span><spanclass="literal number integer">6</span><spanclass="punctuation">,</span><spanclass="literal number integer">3</span><spanclass="punctuation">))</span>
<spanclass="name">T</span><spanclass="operator">=</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">ascontiguousarray</span><spanclass="punctuation">(</span><spanclass="name">Z</span><spanclass="punctuation">)</span><spanclass="operator">.</span><spanclass="name">view</span><spanclass="punctuation">(</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">dtype</span><spanclass="punctuation">((</span><spanclass="name">np</span><spanclass="operator">.</span><spanclass="name">void</span><spanclass="punctuation">,</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">dtype</span><spanclass="operator">.</span><spanclass="name">itemsize</span><spanclass="operator">*</span><spanclass="name">Z</span><spanclass="operator">.</span><spanclass="name">shape</span><spanclass="punctuation">[</span><spanclass="literal number integer">1</span><spanclass="punctuation">])))</span>