Skip to content

Commit b976fbb

Browse files
committed
HTML build
1 parent 9622465 commit b976fbb

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

Diff for: book.html

+9-8
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ <h2 class="subtitle" id="copyright-c-2017-nicolas-p-rougier-nicolas-rougier-inri
2828
<img alt="data/nc.large.png" src="data/nc.large.png" style="width: 40px;" />
2929
<div class="line-block">
3030
<div class="line"><br /></div>
31-
<div class="line">Latest version - August 2017</div>
31+
<div class="line">Latest version - October 2017</div>
3232
<div class="line">DOI: <a class="reference external" href="http://doi.org/10.5281/zenodo.225783">10.5281/zenodo.225783</a></div>
3333
</div>
3434
</div>
@@ -389,7 +389,7 @@ <h2><a class="toc-backref" href="#id3">Readability vs speed</a></h2>
389389
and you don't need to read this book).</p>
390390
<pre class="code python literal-block">
391391
<span class="keyword">def</span> <span class="name function">function_1</span><span class="punctuation">(</span><span class="name">seq</span><span class="punctuation">,</span> <span class="name">sub</span><span class="punctuation">):</span>
392-
<span class="keyword">return</span> <span class="punctuation">[</span><span class="name">i</span> <span class="keyword">for</span> <span class="name">i</span> <span class="operator word">in</span> <span class="name builtin">range</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">seq</span><span class="punctuation">)</span> <span class="operator">-</span> <span class="name builtin">len</span><span class="punctuation">(</span><span class="name">sub</span><span class="punctuation">))</span> <span class="keyword">if</span> <span class="name">seq</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">:</span><span class="name">i</span><span class="operator">+</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">sub</span><span class="punctuation">)]</span> <span class="operator">==</span> <span class="name">sub</span><span class="punctuation">]</span>
392+
<span class="keyword">return</span> <span class="punctuation">[</span><span class="name">i</span> <span class="keyword">for</span> <span class="name">i</span> <span class="operator word">in</span> <span class="name builtin">range</span><span class="punctuation">(</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">seq</span><span class="punctuation">)</span> <span class="operator">-</span> <span class="name builtin">len</span><span class="punctuation">(</span><span class="name">sub</span><span class="punctuation">)</span> <span class="operator">+</span><span class="literal number integer">1</span><span class="punctuation">)</span> <span class="keyword">if</span> <span class="name">seq</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">:</span><span class="name">i</span><span class="operator">+</span><span class="name builtin">len</span><span class="punctuation">(</span><span class="name">sub</span><span class="punctuation">)]</span> <span class="operator">==</span> <span class="name">sub</span><span class="punctuation">]</span>
393393

394394
<span class="keyword">def</span> <span class="name function">function_2</span><span class="punctuation">(</span><span class="name">seq</span><span class="punctuation">,</span> <span class="name">sub</span><span class="punctuation">):</span>
395395
<span class="name">target</span> <span class="operator">=</span> <span class="name">np</span><span class="operator">.</span><span class="name">dot</span><span class="punctuation">(</span><span class="name">sub</span><span class="punctuation">,</span> <span class="name">sub</span><span class="punctuation">)</span>
@@ -504,20 +504,21 @@ <h2><a class="toc-backref" href="#id4">Memory layout</a></h2>
504504
an index tuple) and more precisely, how to compute the start and end offsets:</p>
505505
<pre class="code python literal-block">
506506
<span class="name">offset_start</span> <span class="operator">=</span> <span class="literal number integer">0</span>
507-
<span class="keyword">for</span> <span class="name">i</span> <span class="operator word">in</span> <span class="name builtin">range</span><span class="punctuation">(</span><span class="name">ndim</span><span class="punctuation">):</span>
508-
<span class="name">offset_start</span> <span class="operator">+=</span> <span class="name">strides</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span><span class="operator">*</span><span class="name">index</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span>
507+
<span class="keyword">for</span> <span class="name">i</span> <span class="operator word">in</span> <span class="name builtin">range</span><span class="punctuation">(</span><span class="name">Z</span><span class="operator">.</span><span class="name">ndim</span><span class="punctuation">):</span>
508+
<span class="name">offset_start</span> <span class="operator">+=</span> <span class="name">Z</span><span class="operator">.</span><span class="name">strides</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span> <span class="operator">*</span> <span class="name">index</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span>
509509
<span class="name">offset_end</span> <span class="operator">=</span> <span class="name">offset_start</span> <span class="operator">+</span> <span class="name">Z</span><span class="operator">.</span><span class="name">itemsize</span>
510510
</pre>
511511
<p>Let's see if this is correct using the <a class="reference external" href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tobytes.html">tobytes</a>
512512
conversion method:</p>
513513
<pre class="code python literal-block">
514-
<span class="operator">&gt;&gt;&gt;</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">9</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">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">astype</span><span class="punctuation">(</span><span class="name">np</span><span class="operator">.</span><span class="name">int16</span><span class="punctuation">)</span>
515-
<span class="operator">&gt;&gt;&gt;</span> <span class="name">index</span> <span class="operator">=</span> <span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">1</span>
514+
<span class="operator">&gt;&gt;&gt;</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">9</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">3</span><span class="punctuation">)</span><span class="operator">.</span><span class="name">astype</span><span class="punctuation">(</span><span class="name">np</span><span class="operator">.</span><span class="name">int16</span><span class="punctuation">)</span>
515+
<span class="operator">&gt;&gt;&gt;</span> <span class="name">index</span> <span class="operator">=</span> <span class="literal number integer">1</span><span class="punctuation">,</span> <span class="literal number integer">1</span>
516516
<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="punctuation">[</span><span class="name">index</span><span class="punctuation">]</span><span class="operator">.</span><span class="name">tobytes</span><span class="punctuation">())</span>
517517
<span class="literal string affix">b</span><span class="literal string single">'</span><span class="literal string escape">\x04\x00</span><span class="literal string single">'</span>
518-
<span class="operator">&gt;&gt;&gt;</span> <span class="name">offset</span> <span class="operator">=</span> <span class="literal number integer">0</span>
518+
<span class="operator">&gt;&gt;&gt;</span> <span class="name">offset_start</span> <span class="operator">=</span> <span class="literal number integer">0</span>
519519
<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">for</span> <span class="name">i</span> <span class="operator word">in</span> <span class="name builtin">range</span><span class="punctuation">(</span><span class="name">Z</span><span class="operator">.</span><span class="name">ndim</span><span class="punctuation">):</span>
520-
<span class="operator">...</span> <span class="name">offset</span> <span class="operator">+</span> <span class="operator">=</span> <span class="name">Z</span><span class="operator">.</span><span class="name">strides</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span><span class="operator">*</span><span class="name">index</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span>
520+
<span class="operator">...</span> <span class="name">offset_start</span> <span class="operator">+=</span> <span class="name">Z</span><span class="operator">.</span><span class="name">strides</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span> <span class="operator">*</span> <span class="name">index</span><span class="punctuation">[</span><span class="name">i</span><span class="punctuation">]</span>
521+
<span class="operator">&gt;&gt;&gt;</span> <span class="name">offset_end</span> <span class="operator">=</span> <span class="name">offset_start</span> <span class="operator">+</span> <span class="name">Z</span><span class="operator">.</span><span class="name">itemsize</span>
521522
<span class="operator">&gt;&gt;&gt;</span> <span class="keyword">print</span><span class="punctuation">(</span><span class="name">Z</span><span class="operator">.</span><span class="name">tobytes</span><span class="punctuation">()[</span><span class="name">offset_start</span><span class="punctuation">:</span><span class="name">offset_end</span><span class="punctuation">]</span>
522523
<span class="literal string affix">b</span><span class="literal string single">'</span><span class="literal string escape">\x04\x00</span><span class="literal string single">'</span>
523524
</pre>

0 commit comments

Comments
 (0)