added new articles
dask arrays dask dataframes tqdm tqdm+keras
@ -146,17 +146,17 @@ For a continuous probability distribution, the median is the value such that a n
|
||||
|
||||
<span class="k">def</span> <span class="nf">mode</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
|
||||
<span class="n">dico</span> <span class="o">=</span> <span class="p">{</span><span class="n">x</span><span class="p">:</span><span class="n">data</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">data</span><span class="p">))}</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">dico</span><span class="o">.</span><span class="n">items</span><span class="p">()),</span> <span class="n">key</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">reverse</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">dico</span><span class="o">.</span><span class="n">items</span><span class="p">()),</span> <span class="n">key</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">reverse</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">L</span> <span class="o">=</span> <span class="p">[</span><span class="mi">64630</span><span class="p">,</span><span class="mi">11735</span><span class="p">,</span><span class="mi">14216</span><span class="p">,</span><span class="mi">99233</span><span class="p">,</span><span class="mi">14470</span><span class="p">,</span><span class="mi">4978</span><span class="p">,</span><span class="mi">73429</span><span class="p">,</span><span class="mi">38120</span><span class="p">,</span><span class="mi">51135</span><span class="p">,</span><span class="mi">67060</span><span class="p">,</span> <span class="mi">4978</span><span class="p">,</span> <span class="mi">73429</span><span class="p">]</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Sample : {L}</span><span class="se">\n</span><span class="s2">Mean : {mean(L)}, Median : {median(L)}, Mode : {mode(L)}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Sample : </span><span class="si">{L}</span><span class="se">\n</span><span class="s2">Mean : {mean(L)}, Median : {median(L)}, Mode : {mode(L)}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Sample</span> <span class="p">:</span> <span class="p">[</span><span class="mi">64630</span><span class="p">,</span> <span class="mi">11735</span><span class="p">,</span> <span class="mi">14216</span><span class="p">,</span> <span class="mi">99233</span><span class="p">,</span> <span class="mi">14470</span><span class="p">,</span> <span class="mi">4978</span><span class="p">,</span> <span class="mi">73429</span><span class="p">,</span> <span class="mi">38120</span><span class="p">,</span> <span class="mi">51135</span><span class="p">,</span> <span class="mi">67060</span><span class="p">,</span> <span class="mi">4978</span><span class="p">,</span> <span class="mi">73429</span><span class="p">]</span>
|
||||
<span class="n">Mean</span> <span class="p">:</span> <span class="mi">43117</span><span class="p">.</span><span class="mi">75</span><span class="p">,</span> <span class="n">Median</span> <span class="p">:</span> <span class="mi">44627</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span> <span class="k">Mode</span> <span class="p">:</span> <span class="mi">4978</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Sample : [64630, 11735, 14216, 99233, 14470, 4978, 73429, 38120, 51135, 67060, 4978, 73429]</span>
|
||||
<span class="err">Mean : 43117.75, Median : 44627.5, Mode : 4978</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -165,11 +165,11 @@ For a continuous probability distribution, the median is the value such that a n
|
||||
<div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span><span class="mi">40</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">20</span><span class="p">]</span>
|
||||
<span class="n">weights</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">sum_X</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">([</span><span class="n">x</span><span class="o">*</span><span class="n">w</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span><span class="n">w</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">weights</span><span class="p">)])</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="nb">round</span><span class="p">((</span><span class="n">sum_X</span><span class="o">/</span><span class="nb">sum</span><span class="p">(</span><span class="n">weights</span><span class="p">)),</span><span class="mi">1</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="nb">round</span><span class="p">((</span><span class="n">sum_X</span><span class="o">/</span><span class="nb">sum</span><span class="p">(</span><span class="n">weights</span><span class="p">)),</span><span class="mi">1</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">32</span><span class="p">.</span><span class="mi">0</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">32.0</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -185,7 +185,7 @@ For a continuous probability distribution, the median is the value such that a n
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -161,12 +161,12 @@
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">L</span> <span class="o">=</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">14</span><span class="p">,</span><span class="mi">21</span><span class="p">,</span><span class="mi">13</span><span class="p">,</span><span class="mi">18</span><span class="p">]</span>
|
||||
<span class="n">Q1</span><span class="p">,</span> <span class="n">Q2</span><span class="p">,</span> <span class="n">Q3</span> <span class="o">=</span> <span class="n">quartiles</span><span class="p">(</span><span class="n">L</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Sample : {L}</span><span class="se">\n</span><span class="s2">Q1 : {Q1}, Q2 : {Q2}, Q3 : {Q3}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Sample : </span><span class="si">{L}</span><span class="se">\n</span><span class="s2">Q1 : </span><span class="si">{Q1}</span><span class="s2">, Q2 : </span><span class="si">{Q2}</span><span class="s2">, Q3 : </span><span class="si">{Q3}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Sample</span> <span class="p">:</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">14</span><span class="p">,</span> <span class="mi">21</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">18</span><span class="p">]</span>
|
||||
<span class="n">Q1</span> <span class="p">:</span> <span class="mi">6</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="n">Q2</span> <span class="p">:</span> <span class="mi">12</span><span class="p">,</span> <span class="n">Q3</span> <span class="p">:</span> <span class="mi">16</span><span class="p">.</span><span class="mi">0</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Sample : [3, 7, 8, 5, 12, 14, 21, 13, 18]</span>
|
||||
<span class="err">Q1 : 6.0, Q2 : 12, Q3 : 16.0</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -174,11 +174,11 @@
|
||||
<h3>Definition</h3>
|
||||
<p>The interquartile range of an array is the difference between its first (Q1) and third (Q3) quartiles. Hence the interquartile range is Q3-Q1</p>
|
||||
<h3>Implementation in python without using the scientific libraries</h3>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Interquatile range : {Q3-Q1}"</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Interquatile range : {Q3-Q1}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Interquatile</span> <span class="n">range</span> <span class="p">:</span> <span class="mi">10</span><span class="p">.</span><span class="mi">0</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Interquatile range : 10.0</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -199,11 +199,11 @@
|
||||
<span class="n">std</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span>
|
||||
<span class="nb">sum</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The distribution {X} has a standard deviation of {std}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The distribution </span><span class="si">{X}</span><span class="s2"> has a standard deviation of </span><span class="si">{std}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">distribution</span> <span class="p">[</span><span class="mi">400</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="mi">400</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">.</span><span class="mi">0</span><span class="p">]</span> <span class="n">has</span> <span class="n">a</span> <span class="n">standard</span> <span class="n">deviation</span> <span class="k">of</span> <span class="mi">14</span><span class="p">.</span><span class="mi">142135623730951</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The distribution [400.0, 100.0, 0.0, 400.0, 100.0] has a standard deviation of 14.142135623730951</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -219,7 +219,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -233,7 +233,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">8333333333333334</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.8333333333333334</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -262,7 +262,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">1111111111111111</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.1111111111111111</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -357,7 +357,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">40476190476190477</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.40476190476190477</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -429,7 +429,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -256,7 +256,7 @@ we call B the event "a blue ball is drawn" and R the event "a red ball is drawn"
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -140,11 +140,11 @@
|
||||
<div class="highlight"><pre><span></span><span class="n">r</span> <span class="o">=</span> <span class="mf">1.09</span>
|
||||
<span class="n">p_b</span><span class="o">=</span><span class="n">r</span><span class="o">/</span><span class="p">(</span><span class="n">r</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The probability of having a boy is p={p_b:3f}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The probability of having a boy is p=</span><span class="si">{p_b:3f}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">probability</span> <span class="k">of</span> <span class="k">having</span> <span class="n">a</span> <span class="n">boy</span> <span class="k">is</span> <span class="n">p</span><span class="o">=</span><span class="mi">0</span><span class="p">.</span><span class="mi">521531</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The probability of having a boy is p=0.521531</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -163,11 +163,11 @@
|
||||
<span class="n">b</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">p_b</span><span class="p">,</span> <span class="mi">6</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">7</span><span class="p">):</span>
|
||||
<span class="n">b</span> <span class="o">+=</span> <span class="n">bi_dist</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"probability of getting at least 3 boys in a family with exactly 6 children : {b:.3f}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"probability of getting at least 3 boys in a family with exactly 6 children : </span><span class="si">{b:.3f}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">probability</span> <span class="k">of</span> <span class="n">getting</span> <span class="k">at</span> <span class="n">least</span> <span class="mi">3</span> <span class="n">boys</span> <span class="k">in</span> <span class="n">a</span> <span class="n">family</span> <span class="k">with</span> <span class="n">exactly</span> <span class="mi">6</span> <span class="n">children</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">696</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">probability of getting at least 3 boys in a family with exactly 6 children : 0.696</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -184,11 +184,11 @@
|
||||
<div class="highlight"><pre><span></span><span class="n">b</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">12</span><span class="o">/</span><span class="mi">100</span><span class="p">,</span> <span class="mi">10</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">):</span>
|
||||
<span class="n">b</span> <span class="o">+=</span> <span class="n">bi_dist</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The probability of getting less than 2 faulty pistons in a batch is : {b:.3f}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The probability of getting less than 2 faulty pistons in a batch is : </span><span class="si">{b:.3f}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">probability</span> <span class="k">of</span> <span class="n">getting</span> <span class="k">less</span> <span class="k">than</span> <span class="mi">2</span> <span class="n">faulty</span> <span class="n">pistons</span> <span class="k">in</span> <span class="n">a</span> <span class="n">batch</span> <span class="k">is</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">891</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The probability of getting less than 2 faulty pistons in a batch is : 0.891</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -199,11 +199,11 @@
|
||||
<div class="highlight"><pre><span></span><span class="n">b</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">12</span><span class="o">/</span><span class="mi">100</span><span class="p">,</span> <span class="mi">10</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">11</span><span class="p">):</span>
|
||||
<span class="n">b</span> <span class="o">+=</span> <span class="n">bi_dist</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The probability of getting at least 2 faulty pistons in a batch is : {b:.3f}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The probability of getting at least 2 faulty pistons in a batch is : </span><span class="si">{b:.3f}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">probability</span> <span class="k">of</span> <span class="n">getting</span> <span class="k">at</span> <span class="n">least</span> <span class="mi">2</span> <span class="n">faulty</span> <span class="n">pistons</span> <span class="k">in</span> <span class="n">a</span> <span class="n">batch</span> <span class="k">is</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">342</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The probability of getting at least 2 faulty pistons in a batch is : 0.342</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -215,11 +215,11 @@
|
||||
* <span class="math">\(n=5\)</span>
|
||||
* <span class="math">\(p=\frac{1}{3}\)</span></p>
|
||||
<p>Hence, the probability that the first defect is found during the fith inspection is <span class="math">\(g(n=5,p=1/3)\)</span></p>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The probability that the first defect is found during the fith inspection is {round(((1-p)**(n-1)) * p, 3)}"</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The probability that the first defect is found during the fith inspection is {round(((1-p)**(n-1)) * p, 3)}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">probability</span> <span class="n">that</span> <span class="n">the</span> <span class="k">first</span> <span class="n">defect</span> <span class="k">is</span> <span class="k">found</span> <span class="n">during</span> <span class="n">the</span> <span class="n">fith</span> <span class="n">inspection</span> <span class="k">is</span> <span class="mi">0</span><span class="p">.</span><span class="mi">038</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The probability that the first defect is found during the fith inspection is 0.038</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -235,11 +235,11 @@
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="n">p_x5</span><span class="o">+=</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">p</span><span class="p">)</span><span class="o">**</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">p</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The probability that the first defect is found during the first 5 inspection is {round(p_x5, 3)}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The probability that the first defect is found during the first 5 inspection is {round(p_x5, 3)}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">probability</span> <span class="n">that</span> <span class="n">the</span> <span class="k">first</span> <span class="n">defect</span> <span class="k">is</span> <span class="k">found</span> <span class="n">during</span> <span class="n">the</span> <span class="k">first</span> <span class="mi">5</span> <span class="n">inspection</span> <span class="k">is</span> <span class="mi">0</span><span class="p">.</span><span class="mi">868</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The probability that the first defect is found during the first 5 inspection is 0.868</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -311,7 +311,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,11 +143,11 @@
|
||||
<span class="n">l</span> <span class="o">=</span> <span class="mf">2.5</span>
|
||||
<span class="n">k</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that a random variable X following a Poisson distribution of mean {l} equals {k} : {round(poisson(l,k),3)}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that a random variable X following a Poisson distribution of mean </span><span class="si">{l}</span><span class="s1"> equals </span><span class="si">{k}</span><span class="s1"> : {round(poisson(l,k),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="nv">Probability</span> <span class="nv">that</span> <span class="nv">a</span> <span class="k">random</span> <span class="nv">variable</span> <span class="nv">X</span> <span class="nv">following</span> <span class="nv">a</span> <span class="nv">Poisson</span> <span class="nv">distribution</span> <span class="nv">of</span> <span class="nv">mean</span> <span class="mi">2</span>.<span class="mi">5</span> <span class="nv">equals</span> <span class="mi">5</span> : <span class="mi">0</span>.<span class="mi">067</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that a random variable X following a Poisson distribution of mean 2.5 equals 5 : 0.067</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -174,13 +174,13 @@ Since the expectation is a linear operator :
|
||||
<span class="n">CostX</span> <span class="o">=</span> <span class="mi">160</span> <span class="o">+</span> <span class="mi">40</span><span class="o">*</span><span class="p">(</span><span class="n">averageX</span> <span class="o">+</span> <span class="n">averageX</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">CostY</span> <span class="o">=</span> <span class="mi">128</span> <span class="o">+</span> <span class="mi">40</span><span class="o">*</span><span class="p">(</span><span class="n">averageY</span> <span class="o">+</span> <span class="n">averageY</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Expected cost to run machine A : {round(CostX, 3)}'</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Expected cost to run machine A : {round(CostY, 3)}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Expected cost to run machine A : {round(CostX, 3)}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Expected cost to run machine A : {round(CostY, 3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Expected</span> <span class="n">cost</span> <span class="k">to</span> <span class="n">run</span> <span class="n">machine</span> <span class="n">A</span> <span class="p">:</span> <span class="mi">226</span><span class="p">.</span><span class="mi">176</span>
|
||||
<span class="n">Expected</span> <span class="n">cost</span> <span class="k">to</span> <span class="n">run</span> <span class="n">machine</span> <span class="n">A</span> <span class="p">:</span> <span class="mi">286</span><span class="p">.</span><span class="mi">1</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Expected cost to run machine A : 226.176</span>
|
||||
<span class="err">Expected cost to run machine A : 286.1</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -202,21 +202,21 @@ Between 20 and 22 hours?</p>
|
||||
|
||||
<span class="n">mean</span> <span class="o">=</span> <span class="mi">20</span>
|
||||
<span class="n">sd</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that the car is built in less than 19.5 hours : {round(cumulative(19.5,mean,sd),3)}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that the car is built in less than 19.5 hours : {round(cumulative(19.5,mean,sd),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="n">the</span> <span class="n">car</span> <span class="k">is</span> <span class="n">built</span> <span class="k">in</span> <span class="k">less</span> <span class="k">than</span> <span class="mi">19</span><span class="p">.</span><span class="mi">5</span> <span class="n">hours</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">401</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that the car is built in less than 19.5 hours : 0.401</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Similarly, the probability that a car is built between 20 and 22hours can be computed thanks to the cumulative density function:</p>
|
||||
<div class="math">$$P(20\leq x\leq 22) = F_X(22)-F_X(20)$$</div>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that the car is built between 20 and 22 hours : {round(cumulative(22,mean,sd)-cumulative(20,mean,sd),3)}'</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that the car is built between 20 and 22 hours : {round(cumulative(22,mean,sd)-cumulative(20,mean,sd),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="n">the</span> <span class="n">car</span> <span class="k">is</span> <span class="n">built</span> <span class="k">between</span> <span class="mi">20</span> <span class="k">and</span> <span class="mi">22</span> <span class="n">hours</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">341</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that the car is built between 20 and 22 hours : 0.341</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -233,11 +233,11 @@ Between 20 and 22 hours?</p>
|
||||
<div class="math">$$P(X\gt80) = 1- F_X(80)$$</div>
|
||||
<div class="highlight"><pre><span></span><span class="n">mean</span> <span class="o">=</span> <span class="mi">70</span>
|
||||
<span class="n">sd</span> <span class="o">=</span> <span class="mi">10</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that the the student scored higher than 80 : {round(1- cumulative(80,mean,sd),3)}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that the the student scored higher than 80 : {round(1- cumulative(80,mean,sd),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="n">the</span> <span class="n">the</span> <span class="n">student</span> <span class="n">scored</span> <span class="n">higher</span> <span class="k">than</span> <span class="mi">80</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">159</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that the the student scored higher than 80 : 0.159</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -245,21 +245,21 @@ Between 20 and 22 hours?</p>
|
||||
</p>
|
||||
<div class="math">$$P(X\gt60) = 1- P(X\lt60)$$</div>
|
||||
<div class="math">$$P(X\gt80) = 1- F_X(60)$$</div>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that the the student passed the test : {round(1- cumulative(60,mean,sd),3)}'</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that the the student passed the test : {round(1- cumulative(60,mean,sd),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="n">the</span> <span class="n">the</span> <span class="n">student</span> <span class="n">passed</span> <span class="n">the</span> <span class="n">test</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">841</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that the the student passed the test : 0.841</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Probability that they failed : </p>
|
||||
<div class="math">$$P(X\lt60) = F_X(60)$$</div>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Probability that the student failed the test: {round(cumulative(60,mean,sd),3)}'</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Probability that the student failed the test: {round(cumulative(60,mean,sd),3)}'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="n">the</span> <span class="n">student</span> <span class="n">failed</span> <span class="n">the</span> <span class="n">test</span><span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">159</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that the student failed the test: 0.159</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -331,7 +331,7 @@ Between 20 and 22 hours?</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -148,11 +148,11 @@
|
||||
<span class="n">mu_group</span> <span class="o">=</span> <span class="n">n</span><span class="o">*</span><span class="n">mu</span>
|
||||
<span class="n">st_dev_group</span> <span class="o">=</span> <span class="n">st_dev</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Probability that all the boxes can be lifted by the elevator : {cumulative(max_load, mu_group, st_dev_group)}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Probability that all the boxes can be lifted by the elevator : {cumulative(max_load, mu_group, st_dev_group)}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="k">all</span> <span class="n">the</span> <span class="n">boxes</span> <span class="n">can</span> <span class="n">be</span> <span class="n">lifted</span> <span class="k">by</span> <span class="n">the</span> <span class="n">elevator</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">009815328628645315</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that all the boxes can be lifted by the elevator : 0.009815328628645315</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -171,11 +171,11 @@ The total number of tickets bought follows a normal distribution of mean <span c
|
||||
<span class="n">mu_group</span> <span class="o">=</span> <span class="n">n_students</span><span class="o">*</span><span class="n">mu</span>
|
||||
<span class="n">st_dev_group</span> <span class="o">=</span> <span class="n">st_dev</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n_students</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Probability that all the students can purchase tickets : {cumulative(ticket_supply, mu_group, st_dev_group)}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Probability that all the students can purchase tickets : {cumulative(ticket_supply, mu_group, st_dev_group)}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Probability</span> <span class="n">that</span> <span class="k">all</span> <span class="n">the</span> <span class="n">students</span> <span class="n">can</span> <span class="n">purchase</span> <span class="n">tickets</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">691462461274013</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Probability that all the students can purchase tickets : 0.691462461274013</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -192,13 +192,13 @@ The total number of tickets bought follows a normal distribution of mean <span c
|
||||
<span class="n">mean</span> <span class="o">=</span> <span class="mi">500</span>
|
||||
|
||||
<span class="n">marginOfError</span> <span class="o">=</span> <span class="n">zScore</span> <span class="o">*</span> <span class="n">std</span> <span class="o">/</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"A ="</span><span class="p">,</span><span class="n">mean</span><span class="o">-</span> <span class="n">marginOfError</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"B ="</span><span class="p">,</span><span class="n">mean</span> <span class="o">+</span> <span class="n">marginOfError</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"A ="</span><span class="p">,</span><span class="n">mean</span><span class="o">-</span> <span class="n">marginOfError</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"B ="</span><span class="p">,</span><span class="n">mean</span> <span class="o">+</span> <span class="n">marginOfError</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">A</span> <span class="o">=</span> <span class="mi">484</span><span class="p">.</span><span class="mi">32</span>
|
||||
<span class="n">B</span> <span class="o">=</span> <span class="mi">515</span><span class="p">.</span><span class="mi">68</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">A = 484.32</span>
|
||||
<span class="err">B = 515.68</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -270,7 +270,7 @@ The total number of tickets bought follows a normal distribution of mean <span c
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -155,7 +155,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">6124721937208479</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.6124721937208479</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -174,7 +174,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">6124721937208479</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.6124721937208479</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -200,7 +200,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">.</span><span class="mi">9030303030303031</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0.9030303030303031</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -272,7 +272,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -157,11 +157,11 @@
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">pearson_1</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="n">stdv</span><span class="p">(</span><span class="n">Y</span><span class="p">,</span> <span class="nb">sum</span><span class="p">(</span><span class="n">Y</span><span class="p">)</span><span class="o">/</span><span class="n">n</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span><span class="o">/</span><span class="n">stdv</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="nb">sum</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">/</span><span class="n">n</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">Y</span><span class="p">)</span><span class="o">/</span><span class="n">n</span> <span class="o">-</span> <span class="n">b</span><span class="o">*</span><span class="nb">sum</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">/</span><span class="n">n</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"If a student scored 80 on the math test, he would most likely score a {round(a+80*b,3)} in statistics"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"If a student scored 80 on the math test, he would most likely score a {round(a+80*b,3)} in statistics"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">If</span> <span class="nv">a</span> <span class="nv">student</span> <span class="nv">scored</span> <span class="mi">80</span> <span class="nv">on</span> <span class="nv">the</span> <span class="nv">math</span> <span class="nv">test</span>, <span class="nv">he</span> <span class="nv">would</span> <span class="nv">most</span> <span class="nv">likely</span> <span class="nv">score</span> <span class="nv">a</span> <span class="mi">78</span>.<span class="mi">288</span> <span class="nv">in</span> <span class="nv">statistics</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">If a student scored 80 on the math test, he would most likely score a 78.288 in statistics</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -277,7 +277,7 @@ $$</div>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -133,7 +133,7 @@
|
||||
<p>for <span class="math">\((m+1)\)</span> read constants <span class="math">\((a,f_1, f_2, ..., f_m)\)</span>. We can say that the value of <span class="math">\(Y\)</span> depends on <span class="math">\(m\)</span> features. We study this equation for <span class="math">\(n\)</span> different feature sets <span class="math">\((f_1, f_2, ..., f_m)\)</span> and records each respective value of <span class="math">\(Y\)</span>. </p>
|
||||
<p>If we have <span class="math">\(q\)</span> new feature sets, and without accounting for bias and variance trade-offs,what is the value of <span class="math">\(Y\)</span> for each of the sets?</p>
|
||||
<h2>Python implementation</h2>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="mi">2</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="mi">7</span>
|
||||
<span class="n">x_1</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.18</span><span class="p">,</span> <span class="mf">0.89</span><span class="p">]</span>
|
||||
@ -178,7 +178,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="nb">array</span><span class="p">([</span><span class="mi">105</span><span class="p">.</span><span class="mi">21455835</span><span class="p">,</span> <span class="mi">142</span><span class="p">.</span><span class="mi">67095131</span><span class="p">,</span> <span class="mi">132</span><span class="p">.</span><span class="mi">93605469</span><span class="p">,</span> <span class="mi">129</span><span class="p">.</span><span class="mi">70175405</span><span class="p">])</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">array([105.21455835, 142.67095131, 132.93605469, 129.70175405])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -191,7 +191,7 @@
|
||||
<span class="n">Y_R</span> <span class="o">=</span> <span class="n">Y</span><span class="o">-</span><span class="n">a</span>
|
||||
|
||||
<span class="c1">#calculate b</span>
|
||||
<span class="n">B</span> <span class="o">=</span> <span class="n">inv</span><span class="p">(</span><span class="n">X_R</span><span class="o">.</span><span class="n">T</span><span class="nd">@X_R</span><span class="p">)</span><span class="nd">@X_R.T@Y_R</span>
|
||||
<span class="n">B</span> <span class="o">=</span> <span class="n">inv</span><span class="p">(</span><span class="n">X_R</span><span class="o">.</span><span class="n">T</span><span class="nd">@X_R</span><span class="p">)</span><span class="nd">@X_R</span><span class="o">.</span><span class="n">T</span><span class="nd">@Y_R</span>
|
||||
|
||||
|
||||
<span class="c1">#predict</span>
|
||||
@ -203,7 +203,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="nb">array</span><span class="p">([</span><span class="mi">105</span><span class="p">.</span><span class="mi">21455835</span><span class="p">,</span> <span class="mi">142</span><span class="p">.</span><span class="mi">67095131</span><span class="p">,</span> <span class="mi">132</span><span class="p">.</span><span class="mi">93605469</span><span class="p">,</span> <span class="mi">129</span><span class="p">.</span><span class="mi">70175405</span><span class="p">])</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">array([105.21455835, 142.67095131, 132.93605469, 129.70175405])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -275,7 +275,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -286,7 +286,7 @@ maxuploadtarget=5000
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -305,10 +305,10 @@
|
||||
|
||||
<p>Finally, we can compute the ratio and plot it.</p>
|
||||
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'savefig.dpi'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">300</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.dpi'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">163</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.autolayout'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.autolayout'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.figsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">12</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'font.size'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">26</span>
|
||||
|
||||
@ -318,22 +318,22 @@
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Mayer Mutliple over time"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">"Mayer Mutliple"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"Time"</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Mayer multiple {mayer_multiple.iloc[-1]['High']}"</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Mayer multiple average {mayer_multiple.mean()['High']}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Mayer multiple </span><span class="si">{mayer_multiple.iloc[-1]['High']}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Mayer multiple average {mayer_multiple.mean()['High']}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Mayer</span> <span class="n">multiple</span> <span class="mi">0</span><span class="p">.</span><span class="mi">5108290958630005</span>
|
||||
<span class="n">Mayer</span> <span class="n">multiple</span> <span class="n">average</span> <span class="mi">1</span><span class="p">.</span><span class="mi">3789102045356179</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Mayer multiple 0.5108290958630005</span>
|
||||
<span class="err">Mayer multiple average 1.3789102045356179</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p><img alt="png" src="../images/mayer_multiple/output_5_1.png"></p>
|
||||
<p>Lastly, I wanted to plot the distribution of the Mayer multiple</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">mayer_multiple</span><span class="p">[</span><span class="s2">"High"</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="o">~</span><span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">x</span><span class="p">)]</span>
|
||||
<span class="n">n</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">patches</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'green'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span> <span class="n">density</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">n</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">patches</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'green'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span> <span class="n">density</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="mf">2.4</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"red"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="s1">'We are here today'</span><span class="p">,</span>
|
||||
<span class="n">xy</span><span class="o">=</span><span class="p">(</span><span class="n">mayer_multiple</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s2">"High"</span><span class="p">],</span>
|
||||
@ -346,7 +346,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">[]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -365,7 +365,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
<p>Let's see how we can log the progress and various metrics during the training process to a csv file.
|
||||
Let's first import some libraries</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">keras</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -172,7 +172,7 @@ Let's first import some libraries</p>
|
||||
|
||||
<p>We now need to define the callback by specifiying a file to be written to, the separator and whether to append to the file or erase it every time.</p>
|
||||
<p>The callback has to be added to the callbacks list in the fit method.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">csv_logger</span> <span class="o">=</span> <span class="n">CSVLogger</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"my_csv.csv"</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="s1">';'</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="n">csv_logger</span> <span class="o">=</span> <span class="n">CSVLogger</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"my_csv.csv"</span><span class="p">,</span> <span class="n">separator</span><span class="o">=</span><span class="s1">';'</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">train_images</span><span class="p">,</span> <span class="n">train_labels</span><span class="p">,</span> <span class="n">epochs</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">csv_logger</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
@ -197,7 +197,7 @@ Let's first import some libraries</p>
|
||||
|
||||
|
||||
<p>The results are stored in the my_csv.csv file and contain the epoch results </p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"my_csv.csv"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">";"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
@ -279,7 +279,7 @@ Let's first import some libraries</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -133,19 +133,19 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">_________________________________________________________________</span>
|
||||
<span class="n">Layer</span> <span class="p">(</span><span class="k">type</span><span class="p">)</span> <span class="k">Output</span> <span class="n">Shape</span> <span class="n">Param</span> <span class="o">#</span>
|
||||
<span class="o">=================================================================</span>
|
||||
<span class="n">flatten_2</span> <span class="p">(</span><span class="n">Flatten</span><span class="p">)</span> <span class="p">(</span><span class="k">None</span><span class="p">,</span> <span class="mi">784</span><span class="p">)</span> <span class="mi">0</span>
|
||||
<span class="n">_________________________________________________________________</span>
|
||||
<span class="n">dense_3</span> <span class="p">(</span><span class="n">Dense</span><span class="p">)</span> <span class="p">(</span><span class="k">None</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span> <span class="mi">100480</span>
|
||||
<span class="n">_________________________________________________________________</span>
|
||||
<span class="n">dense_4</span> <span class="p">(</span><span class="n">Dense</span><span class="p">)</span> <span class="p">(</span><span class="k">None</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> <span class="mi">1290</span>
|
||||
<span class="o">=================================================================</span>
|
||||
<span class="n">Total</span> <span class="n">params</span><span class="p">:</span> <span class="mi">101</span><span class="p">,</span><span class="mi">770</span>
|
||||
<span class="n">Trainable</span> <span class="n">params</span><span class="p">:</span> <span class="mi">101</span><span class="p">,</span><span class="mi">770</span>
|
||||
<span class="n">Non</span><span class="o">-</span><span class="n">trainable</span> <span class="n">params</span><span class="p">:</span> <span class="mi">0</span>
|
||||
<span class="n">_________________________________________________________________</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">_________________________________________________________________</span>
|
||||
<span class="err">Layer (type) Output Shape Param # </span>
|
||||
<span class="err">=================================================================</span>
|
||||
<span class="err">flatten_2 (Flatten) (None, 784) 0 </span>
|
||||
<span class="err">_________________________________________________________________</span>
|
||||
<span class="err">dense_3 (Dense) (None, 128) 100480 </span>
|
||||
<span class="err">_________________________________________________________________</span>
|
||||
<span class="err">dense_4 (Dense) (None, 10) 1290 </span>
|
||||
<span class="err">=================================================================</span>
|
||||
<span class="err">Total params: 101,770</span>
|
||||
<span class="err">Trainable params: 101,770</span>
|
||||
<span class="err">Non-trainable params: 0</span>
|
||||
<span class="err">_________________________________________________________________</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -161,7 +161,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -133,7 +133,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">(</span><span class="k">None</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">(None, 28, 28)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -149,7 +149,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -126,17 +126,17 @@
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<p>Keras with the Tensorflow backend can be installed by running the following conda command </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="k">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">keras</span> <span class="n">tensorflow</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">conda install -c conda-forge keras tensorflow</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>If you want a Intel CPU optimized version, install tensorflow-mkl</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="k">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">keras</span> <span class="n">tensorflow</span><span class="o">-</span><span class="n">mkl</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">conda install -c conda-forge keras tensorflow-mkl</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>A GPU compatible version is also available </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="k">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">keras</span> <span class="n">tensorflow</span><span class="o">-</span><span class="n">gpu</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">conda install -c conda-forge keras tensorflow-gpu</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -152,7 +152,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">keras</span><span class="p">.</span><span class="n">engine</span><span class="p">.</span><span class="n">sequential</span><span class="p">.</span><span class="n">Sequential</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">keras.engine.sequential.Sequential</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -154,7 +154,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
<p>Let's see how we can save the model weights after every epoch.
|
||||
Let's first import some libraries</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">keras</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -183,8 +183,8 @@ Let's first import some libraries</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">save_to_hdf5</span> <span class="o">=</span> <span class="n">ModelCheckpoint</span><span class="p">(</span><span class="n">filepath</span><span class="o">=</span><span class="s2">"my_model.h5"</span><span class="p">,</span>
|
||||
<span class="n">monitor</span><span class="o">=</span><span class="s1">'acc'</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="n">save_best_only</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="n">save_weights_only</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">save_best_only</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">save_weights_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">mode</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span>
|
||||
<span class="n">period</span><span class="o">=</span><span class="mi">1</span>
|
||||
<span class="p">)</span>
|
||||
@ -213,13 +213,13 @@ Let's first import some libraries</p>
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="k">if</span> <span class="s2">"my_model.h5"</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">()</span> <span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"The model is saved to my_model.h5"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"The model is saved to my_model.h5"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s1">'no model saved to disk'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'no model saved to disk'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="n">model</span> <span class="k">is</span> <span class="n">saved</span> <span class="k">to</span> <span class="n">my_model</span><span class="p">.</span><span class="n">h5</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The model is saved to my_model.h5</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -235,7 +235,7 @@ Let's first import some libraries</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -127,9 +127,9 @@
|
||||
<div class='article_content'>
|
||||
<h2>general workflow</h2>
|
||||
<p>Let's see how we can get tensorboard to work with a Keras-based Tensorflow code.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tensorflow</span> <span class="kn">as</span> <span class="nn">tf</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>
|
||||
<span class="kn">import</span> <span class="nn">keras</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -185,23 +185,23 @@
|
||||
|
||||
<p>During the training we can see the process, including the loss and the accuracy in the output.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">test_loss</span><span class="p">,</span> <span class="n">test_acc</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">test_images</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Test accuracy : {test_acc}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Test accuracy : </span><span class="si">{test_acc}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">10000</span><span class="o">/</span><span class="mi">10000</span> <span class="p">[</span><span class="o">==============================</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="n">s</span> <span class="mi">67</span><span class="n">us</span><span class="o">/</span><span class="n">step</span>
|
||||
<span class="n">Test</span> <span class="n">accuracy</span> <span class="p">:</span> <span class="mi">0</span><span class="p">.</span><span class="mi">8763</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">10000/10000 [==============================] - 1s 67us/step</span>
|
||||
<span class="err">Test accuracy : 0.8763</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>When the model finishes training, we get an accuracy of about 87%, and we output some sample predictions</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">predictions</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">test_images</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">predictions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">predictions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="mi">1</span><span class="p">.</span><span class="mi">8075149</span><span class="n">e</span><span class="o">-</span><span class="mi">05</span> <span class="mi">3</span><span class="p">.</span><span class="mi">6810281</span><span class="n">e</span><span class="o">-</span><span class="mi">08</span> <span class="mi">6</span><span class="p">.</span><span class="mi">3094416</span><span class="n">e</span><span class="o">-</span><span class="mi">07</span> <span class="mi">5</span><span class="p">.</span><span class="mi">1111499</span><span class="n">e</span><span class="o">-</span><span class="mi">07</span> <span class="mi">1</span><span class="p">.</span><span class="mi">6264809</span><span class="n">e</span><span class="o">-</span><span class="mi">06</span>
|
||||
<span class="mi">3</span><span class="p">.</span><span class="mi">5973577</span><span class="n">e</span><span class="o">-</span><span class="mi">04</span> <span class="mi">1</span><span class="p">.</span><span class="mi">0840570</span><span class="n">e</span><span class="o">-</span><span class="mi">06</span> <span class="mi">3</span><span class="p">.</span><span class="mi">1453002</span><span class="n">e</span><span class="o">-</span><span class="mi">02</span> <span class="mi">1</span><span class="p">.</span><span class="mi">7062060</span><span class="n">e</span><span class="o">-</span><span class="mi">06</span> <span class="mi">9</span><span class="p">.</span><span class="mi">6816361</span><span class="n">e</span><span class="o">-</span><span class="mi">01</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">[1.8075149e-05 3.6810281e-08 6.3094416e-07 5.1111499e-07 1.6264809e-06</span>
|
||||
<span class="err"> 3.5973577e-04 1.0840570e-06 3.1453002e-02 1.7062060e-06 9.6816361e-01]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -218,7 +218,7 @@
|
||||
<p>After having imported our data and defined our model, we specify a log directory where the training information will get written to. </p>
|
||||
<div class="highlight"><pre><span></span><span class="c1">#keep in mind that we already imported the data and defined the model.</span>
|
||||
|
||||
<span class="n">tensorboard</span> <span class="o">=</span> <span class="n">TensorBoard</span><span class="p">(</span><span class="n">log_dir</span><span class="o">=</span><span class="n">f</span><span class="s2">"logs/{time()}"</span><span class="p">)</span>
|
||||
<span class="n">tensorboard</span> <span class="o">=</span> <span class="n">TensorBoard</span><span class="p">(</span><span class="n">log_dir</span><span class="o">=</span><span class="sa">f</span><span class="s2">"logs/{time()}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -235,7 +235,7 @@
|
||||
|
||||
|
||||
<p>TensorBoard will return a http address </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">TensorBoard</span> <span class="mi">1</span><span class="p">.</span><span class="mi">12</span><span class="p">.</span><span class="mi">0</span> <span class="k">at</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">localhost</span><span class="p">:</span><span class="mi">6006</span> <span class="p">(</span><span class="n">Press</span> <span class="n">CTRL</span><span class="o">+</span><span class="k">C</span> <span class="k">to</span> <span class="n">quit</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">TensorBoard 1.12.0 at http://localhost:6006 (Press CTRL+C to quit)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -280,7 +280,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
237
dl/tqdm_keras.html
Normal file
@ -0,0 +1,237 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||||
<meta name="author" content="Guillaume Redoulès">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
|
||||
<title>Showing the training progress - DL</title>
|
||||
|
||||
<!-- JQuery -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||||
<script>
|
||||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||||
</script>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<meta name="tags" content="basics" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" id="searchbar">
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="..#Blog">Blog</a></li>
|
||||
<li><a href="..#Python">Python</a></li>
|
||||
<li><a href="..#Bash">Bash</a></li>
|
||||
<li><a href="..#SQL">SQL</a></li>
|
||||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||||
<li><a href="..#Projects">Projects</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!--<li class="dropdown">
|
||||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||||
</li>-->
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||||
<div class="form-group" style="display:inline;">
|
||||
<div class="input-group" style="display:table;">
|
||||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- end of header section -->
|
||||
<div class="container">
|
||||
<!-- <div class="alert alert-warning" role="alert">
|
||||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||||
</div> -->
|
||||
<section id="content" class="body">
|
||||
<header>
|
||||
<h1>
|
||||
Showing the training progress
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<time class="published" datetime="2019-12-07T21:08:00+01:00">
|
||||
07 décembre 2019
|
||||
</time>
|
||||
</li>
|
||||
<li>DL</li>
|
||||
<li>basics</li>
|
||||
</ol>
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<p>Let's see how we can show the progress and various metrics during the training process interactively in the console or the notebook.
|
||||
Let's first import some libraries</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tensorflow</span> <span class="kn">import</span> <span class="n">keras</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>In this example, we will be using the fashion MNIST dataset to do some basic computer vision, where we will train a Keras neural network to classify items of clothing.</p>
|
||||
<p>In order to import the data we will be using the built in function in Keras : </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">keras</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">fashion_mnist</span><span class="o">.</span><span class="n">load_data</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>The model is a very simple neural network consisting in 2 fully connected layers. The model loss function is chosen in order to have a multiclass classifier : "sparse_categorical_crossentropy"</p>
|
||||
<p>Let's define a simple feedforward network.</p>
|
||||
<div class="highlight"><pre><span></span><span class="c1">##get and preprocess the data</span>
|
||||
<span class="n">fashion_mnist</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">fashion_mnist</span>
|
||||
<span class="p">(</span><span class="n">train_images</span><span class="p">,</span> <span class="n">train_labels</span><span class="p">),</span> <span class="p">(</span><span class="n">test_images</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">)</span> <span class="o">=</span> <span class="n">fashion_mnist</span><span class="o">.</span><span class="n">load_data</span><span class="p">()</span>
|
||||
<span class="n">train_images</span> <span class="o">=</span> <span class="n">train_images</span> <span class="o">/</span> <span class="mf">255.0</span>
|
||||
<span class="n">test_images</span> <span class="o">=</span> <span class="n">test_images</span> <span class="o">/</span> <span class="mf">255.0</span>
|
||||
|
||||
<span class="c1">## define the model </span>
|
||||
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">Sequential</span><span class="p">([</span>
|
||||
<span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Flatten</span><span class="p">(</span><span class="n">input_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span><span class="mi">28</span><span class="p">)),</span>
|
||||
<span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">"relu"</span><span class="p">),</span>
|
||||
<span class="n">keras</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">Dense</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s2">"softmax"</span><span class="p">)</span>
|
||||
<span class="p">])</span>
|
||||
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">optimizer</span><span class="o">=</span><span class="s2">"adam"</span><span class="p">,</span>
|
||||
<span class="n">loss</span> <span class="o">=</span> <span class="s2">"sparse_categorical_crossentropy"</span><span class="p">,</span>
|
||||
<span class="n">metrics</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"accuracy"</span><span class="p">,</span><span class="s1">'mae'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>We now need to define the callback by specifiying to tqdm how to show the training progress.</p>
|
||||
<p>The callback has to be added to the callbacks list in the fit method.</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">total</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">"epoch"</span><span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">cbk</span><span class="p">(</span><span class="n">epoch</span><span class="p">,</span> <span class="n">logs</span><span class="p">):</span>
|
||||
<span class="n">t</span><span class="o">.</span><span class="n">set_postfix</span><span class="p">(</span><span class="n">logs</span><span class="p">,</span> <span class="n">refresh</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="n">t</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
|
||||
<span class="n">cbkWrapped</span> <span class="o">=</span> <span class="n">keras</span><span class="o">.</span><span class="n">callbacks</span><span class="o">.</span><span class="n">LambdaCallback</span><span class="p">(</span><span class="n">on_epoch_end</span><span class="o">=</span><span class="n">cbk</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">train_images</span><span class="p">,</span> <span class="n">train_labels</span><span class="p">,</span> <span class="n">epochs</span><span class="o">=</span><span class="n">t</span><span class="o">.</span><span class="n">total</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">cbkWrapped</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err"> 80%|████████ | 8/10 [00:38<00:09, 4.76s/epoch, loss=0.257, acc=0.904, mean_absolute_error=4.42]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
<div class="bug-reporting__panel">
|
||||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
<!-- start of footer section -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
</center>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||||
<script>
|
||||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Load Google Analytics -->
|
||||
<script>
|
||||
/*
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-66582-32', 'auto');
|
||||
ga('send', 'pageview');
|
||||
*/
|
||||
</script>
|
||||
<!-- End of Google Analytics -->
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../theme/js/bootstrap.min.js"></script>
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 47 KiB |
288
images/daskarray/dask-array-black-text.svg
Normal file
@ -0,0 +1,288 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="526.211"
|
||||
height="252.00002"
|
||||
id="svg3277"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="dask-array-black-text.svg">
|
||||
<defs
|
||||
id="defs3279" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="313.40295"
|
||||
inkscape:cy="40.810933"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="876"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3292"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
originx="-398.9989px"
|
||||
originy="-528.98717px" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata3282">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-398.9989,-271.375)">
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4572"
|
||||
width="60"
|
||||
height="120"
|
||||
x="-522.36218"
|
||||
y="400"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4594"
|
||||
width="60"
|
||||
height="120"
|
||||
x="-452.36218"
|
||||
y="400"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4598"
|
||||
width="80"
|
||||
height="120"
|
||||
x="-382.36218"
|
||||
y="400"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4600"
|
||||
width="20"
|
||||
height="120"
|
||||
x="-292.36218"
|
||||
y="400"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4602"
|
||||
width="60"
|
||||
height="30"
|
||||
x="-522.36218"
|
||||
y="530"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4604"
|
||||
width="60"
|
||||
height="30"
|
||||
x="-452.36218"
|
||||
y="530"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4606"
|
||||
width="80"
|
||||
height="30"
|
||||
x="-382.36218"
|
||||
y="530"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4608"
|
||||
width="20"
|
||||
height="30"
|
||||
x="-292.36218"
|
||||
y="530"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4610"
|
||||
width="60"
|
||||
height="60"
|
||||
x="-522.36218"
|
||||
y="570"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4612"
|
||||
width="60"
|
||||
height="60"
|
||||
x="-452.36218"
|
||||
y="570"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4614"
|
||||
width="80"
|
||||
height="60"
|
||||
x="-382.36218"
|
||||
y="570"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4616"
|
||||
width="20"
|
||||
height="60"
|
||||
x="-292.36218"
|
||||
y="570"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4618"
|
||||
width="60"
|
||||
height="110"
|
||||
x="-522.36218"
|
||||
y="640"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4620"
|
||||
width="60"
|
||||
height="110"
|
||||
x="-452.36218"
|
||||
y="640"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4622"
|
||||
width="80"
|
||||
height="110"
|
||||
x="-382.36218"
|
||||
y="640"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4624"
|
||||
width="20"
|
||||
height="110"
|
||||
x="-292.36218"
|
||||
y="640"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4626"
|
||||
width="60"
|
||||
height="50"
|
||||
x="-522.36218"
|
||||
y="760"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4628"
|
||||
width="60"
|
||||
height="50"
|
||||
x="-452.36218"
|
||||
y="760"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4630"
|
||||
width="80"
|
||||
height="50"
|
||||
x="-382.36218"
|
||||
y="760"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.44292238;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4632"
|
||||
width="20"
|
||||
height="50"
|
||||
x="-292.36218"
|
||||
y="760"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
x="848.61719"
|
||||
y="337.36218"
|
||||
id="text4653"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4655"
|
||||
x="850.23047"
|
||||
y="337.36218"
|
||||
style="font-size:14px;fill:#000000;fill-opacity:1">NumPy </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="848.61719"
|
||||
y="354.86218"
|
||||
id="tspan4657"
|
||||
style="font-size:14px;fill:#000000;fill-opacity:1">Array</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:44.57763289999999756px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
x="1510.3115"
|
||||
y="198.09331"
|
||||
id="text4659"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.53962379,1.8531429)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4661"
|
||||
x="1510.3115"
|
||||
y="198.09331">}</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:107.32640838999999744px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
x="2106.272"
|
||||
y="197.52885"
|
||||
id="text4671"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.41670775,2.3997634)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4673"
|
||||
x="2106.272"
|
||||
y="197.52885">}</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
|
||||
x="908.38672"
|
||||
y="387.36218"
|
||||
id="text4653-3"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="910"
|
||||
y="387.36218"
|
||||
id="tspan4699"
|
||||
style="font-size:14px;fill:#000000;fill-opacity:1">Dask </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="908.38672"
|
||||
y="404.86218"
|
||||
id="tspan4657-0"
|
||||
style="font-size:14px;fill:#000000;fill-opacity:1">Array</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
225
images/daskdataframe/dask-dataframe.svg
Normal file
@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="958.97528"
|
||||
height="1011.8587"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="dask-dataframe.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="122.99827"
|
||||
inkscape:cy="474.42967"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1416"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid2985"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="2px"
|
||||
spacingy="2px"
|
||||
originx="128.55423"
|
||||
originy="-244.0213" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(128.55423,203.51791)">
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:5.58885813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44292238"
|
||||
id="rect2987"
|
||||
width="251.49863"
|
||||
height="195.61005"
|
||||
x="246.14598"
|
||||
y="-200.72348" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:5.58885813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44292238"
|
||||
id="rect3796"
|
||||
width="251.49863"
|
||||
height="139.72145"
|
||||
x="246.14598"
|
||||
y="22.830854" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:5.58885813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44292238"
|
||||
id="rect3798"
|
||||
width="251.49863"
|
||||
height="307.38721"
|
||||
x="246.14598"
|
||||
y="190.4966" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:5.58885813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44292238"
|
||||
id="rect3800"
|
||||
width="251.49863"
|
||||
height="167.66576"
|
||||
x="246.14598"
|
||||
y="525.82812" />
|
||||
<rect
|
||||
style="opacity:0.6;fill:#0000b0;fill-opacity:0.50196078;stroke:#000000;stroke-width:5.58885813;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44292238"
|
||||
id="rect3802"
|
||||
width="251.49863"
|
||||
height="83.832878"
|
||||
x="246.14598"
|
||||
y="721.43817" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="45.246204"
|
||||
y="106.66373"
|
||||
id="text3804-1"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3806-5"
|
||||
x="45.246204"
|
||||
y="106.66373"
|
||||
style="font-size:52.5px">February, 2016</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="78.480225"
|
||||
y="358.16235"
|
||||
id="text3804-3"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3806-9"
|
||||
x="78.480225"
|
||||
y="358.16235"
|
||||
style="font-size:52.5px">March, 2016</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="91.42997"
|
||||
y="609.66095"
|
||||
id="text3804-5"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3806-52"
|
||||
x="91.42997"
|
||||
y="609.66095"
|
||||
style="font-size:52.5px">April, 2016</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="99.693428"
|
||||
y="775.91254"
|
||||
id="text3804-51"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3806-7"
|
||||
x="99.693428"
|
||||
y="775.91254"
|
||||
style="font-size:52.5px">May, 2016</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="698.9798"
|
||||
y="78.719437"
|
||||
id="text3886"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3888"
|
||||
x="705.0296"
|
||||
y="78.719437"
|
||||
style="font-size:52.5px">Pandas </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="698.9798"
|
||||
y="144.34444"
|
||||
style="font-size:52.5px"
|
||||
id="tspan3894">Dataframe</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:122.2452774px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="645.08667"
|
||||
y="114.33765"
|
||||
id="text3890"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.849412,1.177285)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3892"
|
||||
x="645.08667"
|
||||
y="114.33765">}</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="702.44617"
|
||||
y="293.68491"
|
||||
id="text3896"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3898"
|
||||
x="708.49597"
|
||||
y="293.68491"
|
||||
style="font-size:52.5px">Dask </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="702.44617"
|
||||
y="359.30991"
|
||||
id="tspan3904"
|
||||
style="font-size:52.5px">Dataframe</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:355.3336792px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="1527.4156"
|
||||
y="209.45833"
|
||||
id="text3900"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.34044434,2.9373377)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3902"
|
||||
x="1527.4156"
|
||||
y="209.45833">}</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.53314972px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
|
||||
x="45.246204"
|
||||
y="-73.336273"
|
||||
id="text3804-1-3"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3806-5-6"
|
||||
x="45.246204"
|
||||
y="-73.336273"
|
||||
style="font-size:52.5px">January, 2016</tspan></text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.4 KiB |
@ -305,6 +305,7 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li><a href="./dl/tqdm_keras.html">Showing the training progress</a></li>
|
||||
<li><a href="./dl/keras_load.html">Load a saved model</a></li>
|
||||
<li><a href="./dl/keras_input.html">Get model input shape</a></li>
|
||||
<li><a href="./dl/keras_info.html">Get model info and number of parameters</a></li>
|
||||
@ -417,6 +418,7 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li><a href="./python/tqdm.html">Showing progress</a></li>
|
||||
<li><a href="./python/intersection_array.html">Compute the intersection of 2 numpy arrays</a></li>
|
||||
<li><a href="./python/config_list.html">List all sections in a config file</a></li>
|
||||
<li><a href="./python/compare_dict.html">Get items in one dictionnary but not the other one</a></li>
|
||||
@ -511,6 +513,8 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul>
|
||||
<li><a href="./python/dask_dataframes.html">Introduction to dask DataFrames</a></li>
|
||||
<li><a href="./python/dask_array.html">Introduction to dask arrays</a></li>
|
||||
<li><a href="./python/dask_infiniband.html">Using Dask on infiniband</a></li>
|
||||
<li><a href="./python/dask_distributed_parallelism.html">Running multiple calls to a function in parallel with Dask</a></li>
|
||||
</ul>
|
||||
@ -747,7 +751,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
<p>In python, you can clear the output of a cell by importing the IPython.display module and using the clear_output function</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">clear_output</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"text to be cleared"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"text to be cleared"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">clear_output</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
@ -149,7 +149,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -211,7 +211,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -144,7 +144,7 @@ However, you can use the following command to do it </p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -148,7 +148,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -167,7 +167,7 @@ none 0 0 0 - /config
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -256,7 +256,7 @@ wifi0 Link encap:UNSPEC HWaddr 5C-51-4F-41-7A-AD-00-00-00-00-00-00-00-00-00
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -172,7 +172,7 @@ USER;PID;%CPU;%MEM;VSZ;RSS;TTY;STAT;START;TIME;COMMAND</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,7 +143,7 @@ find -type f <span class="se">\(</span> -not -name <span class="s2">"md5sum
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -158,7 +158,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -132,9 +132,9 @@
|
||||
|
||||
|
||||
<p>On my machine with a ssd I get the following results</p>
|
||||
<div class="highlight"><pre><span></span><span class="mi">500</span><span class="o">+</span><span class="mi">0</span> <span class="n">records</span> <span class="k">in</span>
|
||||
<span class="mi">500</span><span class="o">+</span><span class="mi">0</span> <span class="n">records</span> <span class="k">out</span>
|
||||
<span class="mi">524288000</span> <span class="n">bytes</span> <span class="p">(</span><span class="mi">524</span> <span class="n">MB</span><span class="p">,</span> <span class="mi">500</span> <span class="n">MiB</span><span class="p">)</span> <span class="n">copied</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span><span class="mi">153</span> <span class="n">s</span><span class="p">,</span> <span class="mi">51</span><span class="p">,</span><span class="mi">6</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">500+0 records in</span>
|
||||
<span class="err">500+0 records out</span>
|
||||
<span class="err">524288000 bytes (524 MB, 500 MiB) copied, 10,153 s, 51,6 MB/s</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -148,9 +148,9 @@ dd <span class="k">if</span><span class="o">=</span>/dev/zero <span class="nv">o
|
||||
|
||||
|
||||
<p>The results yield a faster write time : </p>
|
||||
<div class="highlight"><pre><span></span><span class="mi">500</span><span class="o">+</span><span class="mi">0</span> <span class="n">records</span> <span class="k">in</span>
|
||||
<span class="mi">500</span><span class="o">+</span><span class="mi">0</span> <span class="n">records</span> <span class="k">out</span>
|
||||
<span class="mi">524288000</span> <span class="n">bytes</span> <span class="p">(</span><span class="mi">524</span> <span class="n">MB</span><span class="p">,</span> <span class="mi">500</span> <span class="n">MiB</span><span class="p">)</span> <span class="n">copied</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span><span class="mi">39849</span> <span class="n">s</span><span class="p">,</span> <span class="mi">81</span><span class="p">,</span><span class="mi">9</span> <span class="n">MB</span><span class="o">/</span><span class="n">s</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">500+0 records in</span>
|
||||
<span class="err">500+0 records out</span>
|
||||
<span class="err">524288000 bytes (524 MB, 500 MiB) copied, 6,39849 s, 81,9 MB/s</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -169,7 +169,7 @@ dd <span class="k">if</span><span class="o">=</span>/dev/zero <span class="nv">o
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
418
linux/sed.html
@ -130,59 +130,59 @@
|
||||
* deleting
|
||||
* printing </p>
|
||||
<p>For this example we will learn how to remove the comments starting with the '#' sign and the blank lines for the following file :</p>
|
||||
<div class="highlight"><pre><span></span>## <span class="nv">Header</span> <span class="nv">of</span> <span class="nv">input</span>.<span class="nv">csv</span>
|
||||
#<span class="nv">this</span> <span class="nv">file</span> <span class="nv">contains</span> <span class="nv">information</span> <span class="nv">I</span> <span class="nv">want</span> <span class="nv">to</span> <span class="nv">parse</span> <span class="nv">with</span> <span class="nv">a</span> <span class="nv">simple</span> <span class="nv">program</span>.
|
||||
#<span class="nv">The</span> <span class="nv">header</span>, <span class="nv">the</span> <span class="nv">footer</span> <span class="nv">or</span> <span class="nv">any</span> <span class="nv">comment</span> <span class="nv">starting</span> <span class="nv">with</span> <span class="nv">a</span> <span class="s2">"</span><span class="s">#</span><span class="s2">"</span> <span class="nv">will</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
#<span class="nv">The</span> <span class="nv">blank</span> <span class="nv">lines</span> <span class="nv">will</span> <span class="nv">also</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
<div class="highlight"><pre><span></span><span class="o">##</span> <span class="n">Header</span> <span class="k">of</span> <span class="k">input</span><span class="p">.</span><span class="n">csv</span>
|
||||
<span class="o">#</span><span class="n">this</span> <span class="n">file</span> <span class="k">contains</span> <span class="n">information</span> <span class="n">I</span> <span class="n">want</span> <span class="k">to</span> <span class="n">parse</span> <span class="k">with</span> <span class="n">a</span> <span class="k">simple</span> <span class="n">program</span><span class="p">.</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">header</span><span class="p">,</span> <span class="n">the</span> <span class="n">footer</span> <span class="k">or</span> <span class="k">any</span> <span class="k">comment</span> <span class="n">starting</span> <span class="k">with</span> <span class="n">a</span> <span class="ss">"#"</span> <span class="n">will</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">blank</span> <span class="n">lines</span> <span class="n">will</span> <span class="n">also</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
|
||||
#<span class="nv">img</span>,<span class="nv">processed</span>,<span class="nv">defaut</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span>,<span class="nv">a0000</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">1</span>,<span class="nv">a0001</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(139, 63)(145, 91)</span><span class="s2">"</span>
|
||||
<span class="mi">2</span>,<span class="nv">a0002</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(93, 72)(24, 162)(31, 64)</span><span class="s2">"</span>
|
||||
<span class="mi">3</span>,<span class="nv">a0003</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">4</span>,<span class="nv">a0004</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">5</span>,<span class="nv">a0005</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">6</span>,<span class="nv">a0006</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">7</span>,<span class="nv">a0007</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">8</span>,<span class="nv">a0008</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">9</span>,<span class="nv">a0009</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)</span><span class="s2">"</span>
|
||||
<span class="mi">10</span>,<span class="nv">a0010</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">11</span>,<span class="nv">a0011</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(39, 78)(84, 110)</span><span class="s2">"</span> # <span class="nv">a</span> <span class="k">random</span> <span class="nv">comment</span> <span class="nv">passing</span> <span class="nv">by</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="o">#</span><span class="n">img</span><span class="p">,</span><span class="n">processed</span><span class="p">,</span><span class="n">defaut</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span><span class="p">,</span><span class="n">a0000</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">1</span><span class="p">,</span><span class="n">a0001</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(139, 63)(145, 91)"</span>
|
||||
<span class="mi">2</span><span class="p">,</span><span class="n">a0002</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="mi">3</span><span class="p">,</span><span class="n">a0003</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">4</span><span class="p">,</span><span class="n">a0004</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">5</span><span class="p">,</span><span class="n">a0005</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">6</span><span class="p">,</span><span class="n">a0006</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">7</span><span class="p">,</span><span class="n">a0007</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">8</span><span class="p">,</span><span class="n">a0008</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">9</span><span class="p">,</span><span class="n">a0009</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="mi">10</span><span class="p">,</span><span class="n">a0010</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">11</span><span class="p">,</span><span class="n">a0011</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(39, 78)(84, 110)"</span> <span class="o">#</span> <span class="n">a</span> <span class="n">random</span> <span class="k">comment</span> <span class="n">passing</span> <span class="k">by</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">1</span>
|
||||
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span>,<span class="nv">a0012</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">13</span>,<span class="nv">a0013</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">14</span>,<span class="nv">a0014</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">15</span>,<span class="nv">a0015</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(146, 65)(146, 89)(139, 146)(16, 68)</span><span class="s2">"</span>
|
||||
<span class="mi">16</span>,<span class="nv">a0016</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)</span><span class="s2">"</span>
|
||||
<span class="mi">17</span>,<span class="nv">a0017</span>.<span class="nv">tif</span>,,
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span><span class="p">,</span><span class="n">a0012</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">13</span><span class="p">,</span><span class="n">a0013</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">14</span><span class="p">,</span><span class="n">a0014</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">15</span><span class="p">,</span><span class="n">a0015</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="mi">16</span><span class="p">,</span><span class="n">a0016</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="mi">17</span><span class="p">,</span><span class="n">a0017</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">2</span>
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span>,<span class="nv">a0018</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">19</span>,<span class="nv">a0019</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">20</span>,<span class="nv">a0020</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(57, 99)(12, 113)(27, 139)(16, 158)</span><span class="s2">"</span>
|
||||
<span class="mi">21</span>,<span class="nv">a0021</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">22</span>,<span class="nv">a0022</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">23</span>,<span class="nv">a0023</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">24</span>,<span class="nv">a0024</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">25</span>,<span class="nv">a0025</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">26</span>,<span class="nv">a0026</span>.<span class="nv">tif</span>,,
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span><span class="p">,</span><span class="n">a0018</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">19</span><span class="p">,</span><span class="n">a0019</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">20</span><span class="p">,</span><span class="n">a0020</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="mi">21</span><span class="p">,</span><span class="n">a0021</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">22</span><span class="p">,</span><span class="n">a0022</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">23</span><span class="p">,</span><span class="n">a0023</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">24</span><span class="p">,</span><span class="n">a0024</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">25</span><span class="p">,</span><span class="n">a0025</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">26</span><span class="p">,</span><span class="n">a0026</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">3</span>
|
||||
|
||||
<span class="mi">27</span>,<span class="nv">a0027</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)</span><span class="s2">"</span>
|
||||
<span class="mi">28</span>,<span class="nv">a0028</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">29</span>,<span class="nv">a0029</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(128, 58)</span><span class="s2">"</span>
|
||||
<span class="mi">27</span><span class="p">,</span><span class="n">a0027</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="mi">28</span><span class="p">,</span><span class="n">a0028</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">29</span><span class="p">,</span><span class="n">a0029</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(128, 58)"</span>
|
||||
|
||||
|
||||
<span class="mi">30</span>,<span class="nv">a0030</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(133, 59)(99, 77)(111, 100)(115, 153)</span><span class="s2">"</span>
|
||||
<span class="mi">31</span>,<span class="nv">a0031</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(43, 154)(27, 177)</span><span class="s2">"</span>
|
||||
<span class="mi">30</span><span class="p">,</span><span class="n">a0030</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="mi">31</span><span class="p">,</span><span class="n">a0031</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(43, 154)(27, 177)"</span>
|
||||
|
||||
|
||||
## <span class="nv">footer</span> : <span class="k">end</span> <span class="nv">of</span> <span class="nv">file</span>
|
||||
<span class="o">##</span> <span class="n">footer</span> <span class="p">:</span> <span class="k">end</span> <span class="k">of</span> <span class="n">file</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -201,59 +201,59 @@
|
||||
|
||||
<p>so we have <code>s</code> meaning that we want to use the replace command followed by a <code>/</code> and the caracter(s) we want to replace followed by a <code>/</code> and the caracter(s) we want to replace it with and finally a <code>/</code>.</p>
|
||||
<p>The result is the following :</p>
|
||||
<div class="highlight"><pre><span></span>## <span class="nv">Header</span>
|
||||
#<span class="nv">this</span> <span class="nv">file</span> <span class="nv">contains</span> <span class="nv">information</span> <span class="nv">I</span> <span class="nv">want</span> <span class="nv">to</span> <span class="nv">parse</span> <span class="nv">with</span> <span class="nv">a</span> <span class="nv">simple</span> <span class="nv">program</span>.
|
||||
#<span class="nv">The</span> <span class="nv">header</span><span class="c1">; the footer or any comment starting with a "#" will be removed</span>
|
||||
#<span class="nv">The</span> <span class="nv">blank</span> <span class="nv">lines</span> <span class="nv">will</span> <span class="nv">also</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
<div class="highlight"><pre><span></span><span class="o">##</span> <span class="n">Header</span>
|
||||
<span class="o">#</span><span class="n">this</span> <span class="n">file</span> <span class="k">contains</span> <span class="n">information</span> <span class="n">I</span> <span class="n">want</span> <span class="k">to</span> <span class="n">parse</span> <span class="k">with</span> <span class="n">a</span> <span class="k">simple</span> <span class="n">program</span><span class="p">.</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">header</span><span class="p">;</span> <span class="n">the</span> <span class="n">footer</span> <span class="k">or</span> <span class="k">any</span> <span class="k">comment</span> <span class="n">starting</span> <span class="k">with</span> <span class="n">a</span> <span class="ss">"#"</span> <span class="n">will</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">blank</span> <span class="n">lines</span> <span class="n">will</span> <span class="n">also</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
|
||||
#<span class="nv">img</span><span class="c1">;processed,defaut</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span><span class="c1">;a0000.tif,,</span>
|
||||
<span class="mi">1</span><span class="c1">;a0001.tif,True,"(139, 63)(145, 91)"</span>
|
||||
<span class="mi">2</span><span class="c1">;a0002.tif,True,"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="mi">3</span><span class="c1">;a0003.tif,,</span>
|
||||
<span class="mi">4</span><span class="c1">;a0004.tif,,</span>
|
||||
<span class="mi">5</span><span class="c1">;a0005.tif,,</span>
|
||||
<span class="mi">6</span><span class="c1">;a0006.tif,,</span>
|
||||
<span class="mi">7</span><span class="c1">;a0007.tif,,</span>
|
||||
<span class="mi">8</span><span class="c1">;a0008.tif,,</span>
|
||||
<span class="mi">9</span><span class="c1">;a0009.tif,True,"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="mi">10</span><span class="c1">;a0010.tif,,</span>
|
||||
<span class="mi">11</span><span class="c1">;a0011.tif,True,"(39, 78)(84, 110)" # a random comment passing by</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="o">#</span><span class="n">img</span><span class="p">;</span><span class="n">processed</span><span class="p">,</span><span class="n">defaut</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span><span class="p">;</span><span class="n">a0000</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">1</span><span class="p">;</span><span class="n">a0001</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(139, 63)(145, 91)"</span>
|
||||
<span class="mi">2</span><span class="p">;</span><span class="n">a0002</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="mi">3</span><span class="p">;</span><span class="n">a0003</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">4</span><span class="p">;</span><span class="n">a0004</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">5</span><span class="p">;</span><span class="n">a0005</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">6</span><span class="p">;</span><span class="n">a0006</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">7</span><span class="p">;</span><span class="n">a0007</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">8</span><span class="p">;</span><span class="n">a0008</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">9</span><span class="p">;</span><span class="n">a0009</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="mi">10</span><span class="p">;</span><span class="n">a0010</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">11</span><span class="p">;</span><span class="n">a0011</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(39, 78)(84, 110)"</span> <span class="o">#</span> <span class="n">a</span> <span class="n">random</span> <span class="k">comment</span> <span class="n">passing</span> <span class="k">by</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">1</span>
|
||||
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span><span class="c1">;a0012.tif,,</span>
|
||||
<span class="mi">13</span><span class="c1">;a0013.tif,,</span>
|
||||
<span class="mi">14</span><span class="c1">;a0014.tif,,</span>
|
||||
<span class="mi">15</span><span class="c1">;a0015.tif,True,"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="mi">16</span><span class="c1">;a0016.tif,True,"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="mi">17</span><span class="c1">;a0017.tif,,</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span><span class="p">;</span><span class="n">a0012</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">13</span><span class="p">;</span><span class="n">a0013</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">14</span><span class="p">;</span><span class="n">a0014</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">15</span><span class="p">;</span><span class="n">a0015</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="mi">16</span><span class="p">;</span><span class="n">a0016</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="mi">17</span><span class="p">;</span><span class="n">a0017</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">2</span>
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span><span class="c1">;a0018.tif,,</span>
|
||||
<span class="mi">19</span><span class="c1">;a0019.tif,,</span>
|
||||
<span class="mi">20</span><span class="c1">;a0020.tif,True,"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="mi">21</span><span class="c1">;a0021.tif,,</span>
|
||||
<span class="mi">22</span><span class="c1">;a0022.tif,,</span>
|
||||
<span class="mi">23</span><span class="c1">;a0023.tif,,</span>
|
||||
<span class="mi">24</span><span class="c1">;a0024.tif,,</span>
|
||||
<span class="mi">25</span><span class="c1">;a0025.tif,,</span>
|
||||
<span class="mi">26</span><span class="c1">;a0026.tif,,</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span><span class="p">;</span><span class="n">a0018</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">19</span><span class="p">;</span><span class="n">a0019</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">20</span><span class="p">;</span><span class="n">a0020</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="mi">21</span><span class="p">;</span><span class="n">a0021</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">22</span><span class="p">;</span><span class="n">a0022</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">23</span><span class="p">;</span><span class="n">a0023</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">24</span><span class="p">;</span><span class="n">a0024</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">25</span><span class="p">;</span><span class="n">a0025</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">26</span><span class="p">;</span><span class="n">a0026</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">3</span>
|
||||
|
||||
<span class="mi">27</span><span class="c1">;a0027.tif,True,"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="mi">28</span><span class="c1">;a0028.tif,,</span>
|
||||
<span class="mi">29</span><span class="c1">;a0029.tif,True,"(128, 58)"</span>
|
||||
<span class="mi">27</span><span class="p">;</span><span class="n">a0027</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="mi">28</span><span class="p">;</span><span class="n">a0028</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">29</span><span class="p">;</span><span class="n">a0029</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(128, 58)"</span>
|
||||
|
||||
|
||||
<span class="mi">30</span><span class="c1">;a0030.tif,True,"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="mi">31</span><span class="c1">;a0031.tif,True,"(43, 154)(27, 177)"</span>
|
||||
<span class="mi">30</span><span class="p">;</span><span class="n">a0030</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="mi">31</span><span class="p">;</span><span class="n">a0031</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(43, 154)(27, 177)"</span>
|
||||
|
||||
|
||||
## <span class="nv">footer</span> : <span class="k">end</span> <span class="nv">of</span> <span class="nv">file</span>
|
||||
<span class="o">##</span> <span class="n">footer</span> <span class="p">:</span> <span class="k">end</span> <span class="k">of</span> <span class="n">file</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -262,59 +262,59 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span>## <span class="nv">Header</span>
|
||||
#<span class="nv">this</span> <span class="nv">file</span> <span class="nv">contains</span> <span class="nv">information</span> <span class="nv">I</span> <span class="nv">want</span> <span class="nv">to</span> <span class="nv">parse</span> <span class="nv">with</span> <span class="nv">a</span> <span class="nv">simple</span> <span class="nv">program</span>.
|
||||
#<span class="nv">The</span> <span class="nv">header</span><span class="c1">; the footer or any comment starting with a "#" will be removed</span>
|
||||
#<span class="nv">The</span> <span class="nv">blank</span> <span class="nv">lines</span> <span class="nv">will</span> <span class="nv">also</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
<div class="highlight"><pre><span></span><span class="o">##</span> <span class="n">Header</span>
|
||||
<span class="o">#</span><span class="n">this</span> <span class="n">file</span> <span class="k">contains</span> <span class="n">information</span> <span class="n">I</span> <span class="n">want</span> <span class="k">to</span> <span class="n">parse</span> <span class="k">with</span> <span class="n">a</span> <span class="k">simple</span> <span class="n">program</span><span class="p">.</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">header</span><span class="p">;</span> <span class="n">the</span> <span class="n">footer</span> <span class="k">or</span> <span class="k">any</span> <span class="k">comment</span> <span class="n">starting</span> <span class="k">with</span> <span class="n">a</span> <span class="ss">"#"</span> <span class="n">will</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
<span class="o">#</span><span class="n">The</span> <span class="n">blank</span> <span class="n">lines</span> <span class="n">will</span> <span class="n">also</span> <span class="n">be</span> <span class="n">removed</span>
|
||||
|
||||
#<span class="nv">img</span><span class="c1">;processed;defaut</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span><span class="c1">;a0000.tif;;</span>
|
||||
<span class="mi">1</span><span class="c1">;a0001.tif;True;"(139; 63)(145; 91)"</span>
|
||||
<span class="mi">2</span><span class="c1">;a0002.tif;True;"(93; 72)(24; 162)(31; 64)"</span>
|
||||
<span class="mi">3</span><span class="c1">;a0003.tif;;</span>
|
||||
<span class="mi">4</span><span class="c1">;a0004.tif;;</span>
|
||||
<span class="mi">5</span><span class="c1">;a0005.tif;;</span>
|
||||
<span class="mi">6</span><span class="c1">;a0006.tif;;</span>
|
||||
<span class="mi">7</span><span class="c1">;a0007.tif;;</span>
|
||||
<span class="mi">8</span><span class="c1">;a0008.tif;;</span>
|
||||
<span class="mi">9</span><span class="c1">;a0009.tif;True;"(127; 80)(104; 60)(87; 63)(53; 78)(17; 126)"</span>
|
||||
<span class="mi">10</span><span class="c1">;a0010.tif;;</span>
|
||||
<span class="mi">11</span><span class="c1">;a0011.tif;True;"(39; 78)(84; 110)" # a random comment passing by</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="o">#</span><span class="n">img</span><span class="p">;</span><span class="n">processed</span><span class="p">;</span><span class="n">defaut</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span><span class="p">;</span><span class="n">a0000</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">1</span><span class="p">;</span><span class="n">a0001</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(139; 63)(145; 91)"</span>
|
||||
<span class="mi">2</span><span class="p">;</span><span class="n">a0002</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(93; 72)(24; 162)(31; 64)"</span>
|
||||
<span class="mi">3</span><span class="p">;</span><span class="n">a0003</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">4</span><span class="p">;</span><span class="n">a0004</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">5</span><span class="p">;</span><span class="n">a0005</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">6</span><span class="p">;</span><span class="n">a0006</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">7</span><span class="p">;</span><span class="n">a0007</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">8</span><span class="p">;</span><span class="n">a0008</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">9</span><span class="p">;</span><span class="n">a0009</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(127; 80)(104; 60)(87; 63)(53; 78)(17; 126)"</span>
|
||||
<span class="mi">10</span><span class="p">;</span><span class="n">a0010</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">11</span><span class="p">;</span><span class="n">a0011</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(39; 78)(84; 110)"</span> <span class="o">#</span> <span class="n">a</span> <span class="n">random</span> <span class="k">comment</span> <span class="n">passing</span> <span class="k">by</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">1</span>
|
||||
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span><span class="c1">;a0012.tif;;</span>
|
||||
<span class="mi">13</span><span class="c1">;a0013.tif;;</span>
|
||||
<span class="mi">14</span><span class="c1">;a0014.tif;;</span>
|
||||
<span class="mi">15</span><span class="c1">;a0015.tif;True;"(146; 65)(146; 89)(139; 146)(16; 68)"</span>
|
||||
<span class="mi">16</span><span class="c1">;a0016.tif;True;"(51; 59)(77; 69)(145; 78)(139; 112)(97; 123)(17; 148)"</span>
|
||||
<span class="mi">17</span><span class="c1">;a0017.tif;;</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span><span class="p">;</span><span class="n">a0012</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">13</span><span class="p">;</span><span class="n">a0013</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">14</span><span class="p">;</span><span class="n">a0014</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">15</span><span class="p">;</span><span class="n">a0015</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(146; 65)(146; 89)(139; 146)(16; 68)"</span>
|
||||
<span class="mi">16</span><span class="p">;</span><span class="n">a0016</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(51; 59)(77; 69)(145; 78)(139; 112)(97; 123)(17; 148)"</span>
|
||||
<span class="mi">17</span><span class="p">;</span><span class="n">a0017</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">2</span>
|
||||
|
||||
#<span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span><span class="c1">;a0018.tif;;</span>
|
||||
<span class="mi">19</span><span class="c1">;a0019.tif;;</span>
|
||||
<span class="mi">20</span><span class="c1">;a0020.tif;True;"(57; 99)(12; 113)(27; 139)(16; 158)"</span>
|
||||
<span class="mi">21</span><span class="c1">;a0021.tif;;</span>
|
||||
<span class="mi">22</span><span class="c1">;a0022.tif;;</span>
|
||||
<span class="mi">23</span><span class="c1">;a0023.tif;;</span>
|
||||
<span class="mi">24</span><span class="c1">;a0024.tif;;</span>
|
||||
<span class="mi">25</span><span class="c1">;a0025.tif;;</span>
|
||||
<span class="mi">26</span><span class="c1">;a0026.tif;;</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="o">#</span><span class="n">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span><span class="p">;</span><span class="n">a0018</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">19</span><span class="p">;</span><span class="n">a0019</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">20</span><span class="p">;</span><span class="n">a0020</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(57; 99)(12; 113)(27; 139)(16; 158)"</span>
|
||||
<span class="mi">21</span><span class="p">;</span><span class="n">a0021</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">22</span><span class="p">;</span><span class="n">a0022</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">23</span><span class="p">;</span><span class="n">a0023</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">24</span><span class="p">;</span><span class="n">a0024</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">25</span><span class="p">;</span><span class="n">a0025</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">26</span><span class="p">;</span><span class="n">a0026</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="o">#</span><span class="k">end</span> <span class="k">of</span> <span class="n">bloc</span> <span class="mi">3</span>
|
||||
|
||||
<span class="mi">27</span><span class="c1">;a0027.tif;True;"(11; 86)(29; 74)(92; 68)(109; 129)(132; 104)"</span>
|
||||
<span class="mi">28</span><span class="c1">;a0028.tif;;</span>
|
||||
<span class="mi">29</span><span class="c1">;a0029.tif;True;"(128; 58)"</span>
|
||||
<span class="mi">27</span><span class="p">;</span><span class="n">a0027</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(11; 86)(29; 74)(92; 68)(109; 129)(132; 104)"</span>
|
||||
<span class="mi">28</span><span class="p">;</span><span class="n">a0028</span><span class="p">.</span><span class="n">tif</span><span class="p">;;</span>
|
||||
<span class="mi">29</span><span class="p">;</span><span class="n">a0029</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(128; 58)"</span>
|
||||
|
||||
|
||||
<span class="mi">30</span><span class="c1">;a0030.tif;True;"(133; 59)(99; 77)(111; 100)(115; 153)"</span>
|
||||
<span class="mi">31</span><span class="c1">;a0031.tif;True;"(43; 154)(27; 177)"</span>
|
||||
<span class="mi">30</span><span class="p">;</span><span class="n">a0030</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(133; 59)(99; 77)(111; 100)(115; 153)"</span>
|
||||
<span class="mi">31</span><span class="p">;</span><span class="n">a0031</span><span class="p">.</span><span class="n">tif</span><span class="p">;</span><span class="k">True</span><span class="p">;</span><span class="ss">"(43; 154)(27; 177)"</span>
|
||||
|
||||
|
||||
## <span class="nv">footer</span> : <span class="k">end</span> <span class="nv">of</span> <span class="nv">file</span>
|
||||
<span class="o">##</span> <span class="n">footer</span> <span class="p">:</span> <span class="k">end</span> <span class="k">of</span> <span class="n">file</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -387,50 +387,50 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span>## <span class="nv">Header</span>
|
||||
#<span class="nv">this</span> <span class="nv">file</span> <span class="nv">contains</span> <span class="nv">information</span> <span class="nv">I</span> <span class="nv">want</span> <span class="nv">to</span> <span class="nv">parse</span> <span class="nv">with</span> <span class="nv">a</span> <span class="nv">simple</span> <span class="nv">program</span>.
|
||||
#<span class="nv">The</span> <span class="nv">header</span>, <span class="nv">the</span> <span class="nv">footer</span> <span class="nv">or</span> <span class="nv">any</span> <span class="nv">comment</span> <span class="nv">starting</span> <span class="nv">with</span> <span class="nv">a</span> <span class="s2">"</span><span class="s">#</span><span class="s2">"</span> <span class="nv">will</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
#<span class="nv">The</span> <span class="nv">blank</span> <span class="nv">lines</span> <span class="nv">will</span> <span class="nv">also</span> <span class="nv">be</span> <span class="nv">removed</span>
|
||||
#<span class="nv">img</span>,<span class="nv">processed</span>,<span class="nv">defaut</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">1</span>
|
||||
<span class="mi">0</span>,<span class="nv">a0000</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">1</span>,<span class="nv">a0001</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(139, 63)(145, 91)</span><span class="s2">"</span>
|
||||
<span class="mi">2</span>,<span class="nv">a0002</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(93, 72)(24, 162)(31, 64)</span><span class="s2">"</span>
|
||||
<span class="mi">3</span>,<span class="nv">a0003</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">4</span>,<span class="nv">a0004</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">5</span>,<span class="nv">a0005</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">6</span>,<span class="nv">a0006</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">7</span>,<span class="nv">a0007</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">8</span>,<span class="nv">a0008</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">9</span>,<span class="nv">a0009</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)</span><span class="s2">"</span>
|
||||
<span class="mi">10</span>,<span class="nv">a0010</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">11</span>,<span class="nv">a0011</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(39, 78)(84, 110)</span><span class="s2">"</span> # <span class="nv">a</span> <span class="k">random</span> <span class="nv">comment</span> <span class="nv">passing</span> <span class="nv">by</span>
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">1</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">2</span>
|
||||
<span class="mi">12</span>,<span class="nv">a0012</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">13</span>,<span class="nv">a0013</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">14</span>,<span class="nv">a0014</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">15</span>,<span class="nv">a0015</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(146, 65)(146, 89)(139, 146)(16, 68)</span><span class="s2">"</span>
|
||||
<span class="mi">16</span>,<span class="nv">a0016</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)</span><span class="s2">"</span>
|
||||
<span class="mi">17</span>,<span class="nv">a0017</span>.<span class="nv">tif</span>,,
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">2</span>
|
||||
#<span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">18</span>,<span class="nv">a0018</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">19</span>,<span class="nv">a0019</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">20</span>,<span class="nv">a0020</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(57, 99)(12, 113)(27, 139)(16, 158)</span><span class="s2">"</span>
|
||||
<span class="mi">21</span>,<span class="nv">a0021</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">22</span>,<span class="nv">a0022</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">23</span>,<span class="nv">a0023</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">24</span>,<span class="nv">a0024</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">25</span>,<span class="nv">a0025</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">26</span>,<span class="nv">a0026</span>.<span class="nv">tif</span>,,
|
||||
#<span class="k">end</span> <span class="nv">of</span> <span class="nv">bloc</span> <span class="mi">3</span>
|
||||
<span class="mi">27</span>,<span class="nv">a0027</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)</span><span class="s2">"</span>
|
||||
<span class="mi">28</span>,<span class="nv">a0028</span>.<span class="nv">tif</span>,,
|
||||
<span class="mi">29</span>,<span class="nv">a0029</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(128, 58)</span><span class="s2">"</span>
|
||||
<span class="mi">30</span>,<span class="nv">a0030</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(133, 59)(99, 77)(111, 100)(115, 153)</span><span class="s2">"</span>
|
||||
<span class="mi">31</span>,<span class="nv">a0031</span>.<span class="nv">tif</span>,<span class="nv">True</span>,<span class="s2">"</span><span class="s">(43, 154)(27, 177)</span><span class="s2">"</span>
|
||||
## <span class="nv">footer</span> : <span class="k">end</span> <span class="nv">of</span> <span class="nv">file</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">## Header</span>
|
||||
<span class="err">#this file contains information I want to parse with a simple program.</span>
|
||||
<span class="err">#The header, the footer or any comment starting with a "#" will be removed</span>
|
||||
<span class="err">#The blank lines will also be removed</span>
|
||||
<span class="err">#img,processed,defaut</span>
|
||||
<span class="err">#bloc 1</span>
|
||||
<span class="err">0,a0000.tif,,</span>
|
||||
<span class="err">1,a0001.tif,True,"(139, 63)(145, 91)"</span>
|
||||
<span class="err">2,a0002.tif,True,"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="err">3,a0003.tif,,</span>
|
||||
<span class="err">4,a0004.tif,,</span>
|
||||
<span class="err">5,a0005.tif,,</span>
|
||||
<span class="err">6,a0006.tif,,</span>
|
||||
<span class="err">7,a0007.tif,,</span>
|
||||
<span class="err">8,a0008.tif,,</span>
|
||||
<span class="err">9,a0009.tif,True,"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="err">10,a0010.tif,,</span>
|
||||
<span class="err">11,a0011.tif,True,"(39, 78)(84, 110)" # a random comment passing by</span>
|
||||
<span class="err">#end of bloc 1</span>
|
||||
<span class="err">#bloc 2</span>
|
||||
<span class="err">12,a0012.tif,,</span>
|
||||
<span class="err">13,a0013.tif,,</span>
|
||||
<span class="err">14,a0014.tif,,</span>
|
||||
<span class="err">15,a0015.tif,True,"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="err">16,a0016.tif,True,"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="err">17,a0017.tif,,</span>
|
||||
<span class="err">#end of bloc 2</span>
|
||||
<span class="err">#bloc 3</span>
|
||||
<span class="err">18,a0018.tif,,</span>
|
||||
<span class="err">19,a0019.tif,,</span>
|
||||
<span class="err">20,a0020.tif,True,"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="err">21,a0021.tif,,</span>
|
||||
<span class="err">22,a0022.tif,,</span>
|
||||
<span class="err">23,a0023.tif,,</span>
|
||||
<span class="err">24,a0024.tif,,</span>
|
||||
<span class="err">25,a0025.tif,,</span>
|
||||
<span class="err">26,a0026.tif,,</span>
|
||||
<span class="err">#end of bloc 3</span>
|
||||
<span class="err">27,a0027.tif,True,"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="err">28,a0028.tif,,</span>
|
||||
<span class="err">29,a0029.tif,True,"(128, 58)"</span>
|
||||
<span class="err">30,a0030.tif,True,"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="err">31,a0031.tif,True,"(43, 154)(27, 177)"</span>
|
||||
<span class="err">## footer : end of file</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -441,38 +441,38 @@
|
||||
|
||||
|
||||
<p>and the final output is </p>
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span><span class="p">,</span><span class="n">a0000</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">1</span><span class="p">,</span><span class="n">a0001</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(139, 63)(145, 91)"</span>
|
||||
<span class="mi">2</span><span class="p">,</span><span class="n">a0002</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="mi">3</span><span class="p">,</span><span class="n">a0003</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">4</span><span class="p">,</span><span class="n">a0004</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">5</span><span class="p">,</span><span class="n">a0005</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">6</span><span class="p">,</span><span class="n">a0006</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">7</span><span class="p">,</span><span class="n">a0007</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">8</span><span class="p">,</span><span class="n">a0008</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">9</span><span class="p">,</span><span class="n">a0009</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="mi">10</span><span class="p">,</span><span class="n">a0010</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">11</span><span class="p">,</span><span class="n">a0011</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(39, 78)(84, 110)"</span>
|
||||
<span class="mi">12</span><span class="p">,</span><span class="n">a0012</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">13</span><span class="p">,</span><span class="n">a0013</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">14</span><span class="p">,</span><span class="n">a0014</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">15</span><span class="p">,</span><span class="n">a0015</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="mi">16</span><span class="p">,</span><span class="n">a0016</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="mi">17</span><span class="p">,</span><span class="n">a0017</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">18</span><span class="p">,</span><span class="n">a0018</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">19</span><span class="p">,</span><span class="n">a0019</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">20</span><span class="p">,</span><span class="n">a0020</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="mi">21</span><span class="p">,</span><span class="n">a0021</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">22</span><span class="p">,</span><span class="n">a0022</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">23</span><span class="p">,</span><span class="n">a0023</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">24</span><span class="p">,</span><span class="n">a0024</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">25</span><span class="p">,</span><span class="n">a0025</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">26</span><span class="p">,</span><span class="n">a0026</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">27</span><span class="p">,</span><span class="n">a0027</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="mi">28</span><span class="p">,</span><span class="n">a0028</span><span class="p">.</span><span class="n">tif</span><span class="p">,,</span>
|
||||
<span class="mi">29</span><span class="p">,</span><span class="n">a0029</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(128, 58)"</span>
|
||||
<span class="mi">30</span><span class="p">,</span><span class="n">a0030</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="mi">31</span><span class="p">,</span><span class="n">a0031</span><span class="p">.</span><span class="n">tif</span><span class="p">,</span><span class="k">True</span><span class="p">,</span><span class="ss">"(43, 154)(27, 177)"</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0,a0000.tif,,</span>
|
||||
<span class="err">1,a0001.tif,True,"(139, 63)(145, 91)"</span>
|
||||
<span class="err">2,a0002.tif,True,"(93, 72)(24, 162)(31, 64)"</span>
|
||||
<span class="err">3,a0003.tif,,</span>
|
||||
<span class="err">4,a0004.tif,,</span>
|
||||
<span class="err">5,a0005.tif,,</span>
|
||||
<span class="err">6,a0006.tif,,</span>
|
||||
<span class="err">7,a0007.tif,,</span>
|
||||
<span class="err">8,a0008.tif,,</span>
|
||||
<span class="err">9,a0009.tif,True,"(127, 80)(104, 60)(87, 63)(53, 78)(17, 126)"</span>
|
||||
<span class="err">10,a0010.tif,,</span>
|
||||
<span class="err">11,a0011.tif,True,"(39, 78)(84, 110)"</span>
|
||||
<span class="err">12,a0012.tif,,</span>
|
||||
<span class="err">13,a0013.tif,,</span>
|
||||
<span class="err">14,a0014.tif,,</span>
|
||||
<span class="err">15,a0015.tif,True,"(146, 65)(146, 89)(139, 146)(16, 68)"</span>
|
||||
<span class="err">16,a0016.tif,True,"(51, 59)(77, 69)(145, 78)(139, 112)(97, 123)(17, 148)"</span>
|
||||
<span class="err">17,a0017.tif,,</span>
|
||||
<span class="err">18,a0018.tif,,</span>
|
||||
<span class="err">19,a0019.tif,,</span>
|
||||
<span class="err">20,a0020.tif,True,"(57, 99)(12, 113)(27, 139)(16, 158)"</span>
|
||||
<span class="err">21,a0021.tif,,</span>
|
||||
<span class="err">22,a0022.tif,,</span>
|
||||
<span class="err">23,a0023.tif,,</span>
|
||||
<span class="err">24,a0024.tif,,</span>
|
||||
<span class="err">25,a0025.tif,,</span>
|
||||
<span class="err">26,a0026.tif,,</span>
|
||||
<span class="err">27,a0027.tif,True,"(11, 86)(29, 74)(92, 68)(109, 129)(132, 104)"</span>
|
||||
<span class="err">28,a0028.tif,,</span>
|
||||
<span class="err">29,a0029.tif,True,"(128, 58)"</span>
|
||||
<span class="err">30,a0030.tif,True,"(133, 59)(99, 77)(111, 100)(115, 153)"</span>
|
||||
<span class="err">31,a0031.tif,True,"(43, 154)(27, 177)"</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -494,7 +494,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -151,7 +151,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -208,7 +208,7 @@ The secret number is 126
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -160,7 +160,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -148,21 +148,21 @@ Where :</p>
|
||||
<h2>Linear Regression in Python</h2>
|
||||
<p>We can use the fit function in the sklearn.linear_model.LinearRegression class.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn</span> <span class="kn">import</span> <span class="n">linear_model</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="n">xl</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">xl</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">]</span>
|
||||
<span class="n">lm</span> <span class="o">=</span> <span class="n">linear_model</span><span class="o">.</span><span class="n">LinearRegression</span><span class="p">()</span>
|
||||
<span class="n">lm</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'a = {lm.intercept_}'</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'b = {lm.coef_[0]}'</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"Where Y=a+b*X"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'a = </span><span class="si">{lm.intercept_}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'b = </span><span class="si">{lm.coef_[0]}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Where Y=a+b*X"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">a</span> <span class="o">=</span> <span class="mi">0</span><span class="p">.</span><span class="mi">5999999999999996</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">.</span><span class="mi">8000000000000002</span>
|
||||
<span class="k">Where</span> <span class="n">Y</span><span class="o">=</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="o">*</span><span class="n">X</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">a = 0.5999999999999996</span>
|
||||
<span class="err">b = 0.8000000000000002</span>
|
||||
<span class="err">Where Y=a+b*X</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -234,7 +234,7 @@ Where :</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -176,7 +176,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -172,11 +172,11 @@ b_2\\
|
||||
<span class="n">lm</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">intercept_</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">coef_</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"Linear regression coefficients between Y and X : a={a}, b_0={b[0]}, b_1={b[1]}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Linear regression coefficients between Y and X : a=</span><span class="si">{a}</span><span class="s2">, b_0=</span><span class="si">{b[0]}</span><span class="s2">, b_1=</span><span class="si">{b[1]}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Linear</span> <span class="n">regression</span> <span class="n">coefficients</span> <span class="k">between</span> <span class="n">Y</span> <span class="k">and</span> <span class="n">X</span> <span class="p">:</span> <span class="n">a</span><span class="o">=</span><span class="mi">51</span><span class="p">.</span><span class="mi">953488372092984</span><span class="p">,</span> <span class="n">b_0</span><span class="o">=</span><span class="mi">6</span><span class="p">.</span><span class="mi">65116279069768</span><span class="p">,</span> <span class="n">b_1</span><span class="o">=-</span><span class="mi">11</span><span class="p">.</span><span class="mi">162790697674419</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Linear regression coefficients between Y and X : a=51.953488372092984, b_0=6.65116279069768, b_1=-11.162790697674419</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -248,7 +248,7 @@ b_2\\
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -196,7 +196,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -154,7 +154,7 @@
|
||||
|
||||
|
||||
<p>Using numpy </p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="mi">10</span> <span class="c1">#number of coin toss</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1">#probability</span>
|
||||
@ -256,7 +256,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -233,7 +233,7 @@ So :
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -214,7 +214,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -195,7 +195,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -197,7 +197,7 @@ and B are considered to be independent if event A has no effect on the probabili
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -221,7 +221,7 @@ where <span class="math">\(erf\)</span> is the error function:
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -206,7 +206,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -222,7 +222,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -223,7 +223,7 @@ $$</div>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -145,7 +145,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -135,12 +135,12 @@
|
||||
<h2>Scrapping google maps</h2>
|
||||
<p>Since google maps is a dynamic website, we cannot use simple tools such as wget or curl. Even webparsers such as scrappy don't render the DOM hence cannot work in this situation. The easiest way to scrap data from such websites is to take control of a browser by using an automation tool. In this case we will use selenium to take control of Google Chrome with the chromedriver.</p>
|
||||
<p>You have to install selenium with </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="k">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">selenium</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">conda install -c conda-forge selenium</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>or </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">selenium</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">pip install selenium</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -156,20 +156,20 @@ BeautifulSoup is a package we will use to parse the html of the webpage opened i
|
||||
<span class="kn">from</span> <span class="nn">selenium.webdriver.chrome.options</span> <span class="kn">import</span> <span class="n">Options</span>
|
||||
|
||||
<span class="c1">#beautifulsoup is used to parse the dom of the html page</span>
|
||||
<span class="kn">import</span> <span class="nn">bs4</span> <span class="kn">as</span> <span class="nn">BeautifulSoup</span>
|
||||
<span class="kn">import</span> <span class="nn">bs4</span> <span class="k">as</span> <span class="nn">BeautifulSoup</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>We will also need some extra libraries for plotting the results</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">from</span> <span class="nn">matplotlib.transforms</span> <span class="kn">import</span> <span class="n">offset_copy</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">cartopy.crs</span> <span class="kn">as</span> <span class="nn">ccrs</span>
|
||||
<span class="kn">import</span> <span class="nn">cartopy.io.img_tiles</span> <span class="kn">as</span> <span class="nn">cimgt</span>
|
||||
<span class="kn">import</span> <span class="nn">cartopy.crs</span> <span class="k">as</span> <span class="nn">ccrs</span>
|
||||
<span class="kn">import</span> <span class="nn">cartopy.io.img_tiles</span> <span class="k">as</span> <span class="nn">cimgt</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -192,10 +192,10 @@ BeautifulSoup is a package we will use to parse the html of the webpage opened i
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> get the estimated travel time of the google maps given as url</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">resultats</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">resultats</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||||
|
||||
<span class="k">while</span> <span class="n">resultats</span> <span class="o">==</span> <span class="bp">None</span> <span class="p">:</span>
|
||||
<span class="k">while</span> <span class="n">resultats</span> <span class="o">==</span> <span class="kc">None</span> <span class="p">:</span>
|
||||
<span class="n">soupe</span> <span class="o">=</span> <span class="n">BeautifulSoup</span><span class="o">.</span><span class="n">BeautifulSoup</span><span class="p">(</span><span class="n">driver</span><span class="o">.</span><span class="n">page_source</span><span class="p">,</span> <span class="s2">"lxml"</span><span class="p">)</span>
|
||||
<span class="n">soupe</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"section-directions-trip-numbers"</span><span class="p">)</span>
|
||||
<span class="n">resultats</span> <span class="o">=</span> <span class="n">soupe</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">'div'</span><span class="p">,</span><span class="n">attrs</span><span class="o">=</span><span class="p">{</span><span class="s2">"class"</span><span class="p">:</span><span class="sa">u</span><span class="s2">"section-directions-trip-numbers"</span><span class="p">})</span>
|
||||
@ -217,15 +217,15 @@ BeautifulSoup is a package we will use to parse the html of the webpage opened i
|
||||
<span class="k">for</span> <span class="n">coordY</span> <span class="ow">in</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">lat_begin</span><span class="p">,</span> <span class="n">lat_end</span><span class="p">,</span> <span class="n">nb</span><span class="p">):</span>
|
||||
|
||||
|
||||
<span class="n">url_journey1</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"https://www.google.com/maps/dir/{coordX},{coordY}/@{longitudeDestination1},{latitudeDestination1},12z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e67bff078f6575:0x95df2619f9304bd7!2m2!1d2.1825421!2d48.778384!2m4!2b1!6e0!7e2!8j1570521600!3e0"</span>
|
||||
<span class="n">url_journey2</span> <span class="o">=</span> <span class="n">f</span><span class="s1">'https://www.google.com/maps/dir/{coordX},{coordY}/@{longitudeDestination2},{latitudeDestination2},14z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e665df0cb0b919:0x5f513cdf2fe6d39d!2m2!1d2.2572779!2d48.9368666!2m4!2b1!6e0!7e2!8j1570521600!3e0'</span>
|
||||
<span class="n">url_journey1</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"https://www.google.com/maps/dir/</span><span class="si">{coordX}</span><span class="s2">,</span><span class="si">{coordY}</span><span class="s2">/@</span><span class="si">{longitudeDestination1}</span><span class="s2">,</span><span class="si">{latitudeDestination1}</span><span class="s2">,12z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e67bff078f6575:0x95df2619f9304bd7!2m2!1d2.1825421!2d48.778384!2m4!2b1!6e0!7e2!8j1570521600!3e0"</span>
|
||||
<span class="n">url_journey2</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'https://www.google.com/maps/dir/</span><span class="si">{coordX}</span><span class="s1">,</span><span class="si">{coordY}</span><span class="s1">/@</span><span class="si">{longitudeDestination2}</span><span class="s1">,</span><span class="si">{latitudeDestination2}</span><span class="s1">,14z/data=!3m1!4b1!4m14!4m13!1m0!1m5!1m1!1s0x47e665df0cb0b919:0x5f513cdf2fe6d39d!2m2!1d2.2572779!2d48.9368666!2m4!2b1!6e0!7e2!8j1570521600!3e0'</span>
|
||||
|
||||
<span class="n">temps_user1</span> <span class="o">=</span> <span class="n">get_travel_time</span><span class="p">(</span><span class="n">url_journey1</span><span class="p">,</span> <span class="n">driver</span><span class="p">)</span>
|
||||
<span class="n">temps_user2</span> <span class="o">=</span> <span class="n">get_travel_time</span><span class="p">(</span><span class="n">url_journey2</span><span class="p">,</span> <span class="n">driver</span><span class="p">)</span>
|
||||
|
||||
<span class="n">ctn</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Downloaded : {ctn/(nb*nb)*100}%'</span><span class="p">)</span>
|
||||
<span class="n">time</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">coordX</span><span class="p">,</span> <span class="n">coordY</span><span class="p">,</span> <span class="n">temps_user1</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">temps_user2</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">f</span><span class="s1">'https://www.google.com/maps/place/{coordX},{coordY}'</span><span class="p">])</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Downloaded : {ctn/(nb*nb)*100}%'</span><span class="p">)</span>
|
||||
<span class="n">time</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">coordX</span><span class="p">,</span> <span class="n">coordY</span><span class="p">,</span> <span class="n">temps_user1</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">temps_user2</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="sa">f</span><span class="s1">'https://www.google.com/maps/place/</span><span class="si">{coordX}</span><span class="s1">,</span><span class="si">{coordY}</span><span class="s1">'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -295,7 +295,7 @@ BeautifulSoup is a package we will use to parse the html of the webpage opened i
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"latitude"</span><span class="p">,</span> <span class="s2">"longitude"</span><span class="p">,</span> <span class="s2">"geometric mean low"</span><span class="p">,</span> <span class="s2">"geometric mean high"</span><span class="p">,</span> <span class="s2">"time low 1"</span><span class="p">,</span> <span class="s2">"time high 1"</span><span class="p">,</span> <span class="s2">"time low 2"</span><span class="p">,</span> <span class="s2">"time high 2"</span><span class="p">])</span>
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s2">"geometric mean low"</span><span class="p">)</span>
|
||||
<span class="n">traveltime</span> <span class="o">=</span> <span class="n">traveltime</span><span class="o">.</span><span class="n">reset_index</span><span class="p">()</span>
|
||||
<span class="n">traveltime</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s2">"extraction.csv"</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="c1">#save it to csv</span>
|
||||
<span class="n">traveltime</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s2">"extraction.csv"</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="c1">#save it to csv</span>
|
||||
<span class="n">traveltime</span><span class="o">.</span><span class="n">head</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="c1">#print the 10 first rows</span>
|
||||
</pre></div>
|
||||
|
||||
@ -524,7 +524,7 @@ And we do the same for he 10 points that minimize time for user 2, color them is
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -136,9 +136,9 @@
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="k">def</span> <span class="nf">check_for_db_file</span> <span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="s2">"mydatabase.db"</span><span class="p">):</span>
|
||||
<span class="k">print</span> <span class="p">(</span><span class="s2">"the database is ready"</span><span class="p">)</span>
|
||||
<span class="nb">print</span> <span class="p">(</span><span class="s2">"the database is ready"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"no database found"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"no database found"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">no</span> <span class="k">database</span> <span class="k">found</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">no database found</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -155,9 +155,9 @@
|
||||
<span class="sd">""" create a database connection to a SQLite database """</span>
|
||||
<span class="k">try</span> <span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">db_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"database created with sqlite3 version {0}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sqlite3</span><span class="o">.</span><span class="n">version</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"database created with sqlite3 version </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sqlite3</span><span class="o">.</span><span class="n">version</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">database</span> <span class="n">created</span> <span class="k">with</span> <span class="n">sqlite3</span> <span class="k">version</span> <span class="mi">2</span><span class="p">.</span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">database created with sqlite3 version 2.6.0</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -173,7 +173,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">the</span> <span class="k">database</span> <span class="k">is</span> <span class="n">ready</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">the database is ready</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -192,7 +192,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -131,7 +131,7 @@
|
||||
* tensor field.</p>
|
||||
<p>With tensorial results, it is often useful to extract the eigenvalues in order to find the principal values.</p>
|
||||
<p>I have found that it is easier to store the components of the tensors in a 6 column pandas dataframe (because of the symmetric property of stress and strain tensors)</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="n">node</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1001</span><span class="p">,</span> <span class="mi">1002</span><span class="p">,</span> <span class="mi">1003</span><span class="p">,</span> <span class="mi">1004</span><span class="p">]</span> <span class="c1">#when dealing with FEM results you should remember at which element/node the result is computed (in the example, let's assume that we look at node from 1001 to 1004)</span>
|
||||
<span class="n">tensor1</span><span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span> <span class="c1">#eigen : 1</span>
|
||||
<span class="n">tensor2</span><span class="o">=</span> <span class="p">[</span><span class="mi">4</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="c1">#eigen : 5.58443, -1.77931, -0.805118</span>
|
||||
@ -212,7 +212,7 @@
|
||||
|
||||
<p>If you want to extract the eigenvalues of a tensor with numpy you have to pass a n by n ndarray to the eigenvalue function. In order to avoid having to loop over each node, this oneliner is highly optimized and will help you invert a large number of tensors efficiently.</p>
|
||||
<p>The steps are basically, create a list of n by n values (here n=3) in the right order => reshape it to a list of tensors => pass it to the eigenvals function</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">linalg</span> <span class="k">as</span> <span class="n">LA</span>
|
||||
</pre></div>
|
||||
|
||||
@ -222,10 +222,10 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="nb">array</span><span class="p">([[</span> <span class="mi">1</span><span class="p">.</span> <span class="p">,</span> <span class="mi">1</span><span class="p">.</span> <span class="p">,</span> <span class="mi">1</span><span class="p">.</span> <span class="p">],</span>
|
||||
<span class="p">[</span> <span class="mi">5</span><span class="p">.</span><span class="mi">58442834</span><span class="p">,</span> <span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">80511809</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">77931025</span><span class="p">],</span>
|
||||
<span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">31577211</span><span class="p">,</span> <span class="mi">8</span><span class="p">.</span><span class="mi">85035616</span><span class="p">,</span> <span class="mi">4</span><span class="p">.</span><span class="mi">46541595</span><span class="p">],</span>
|
||||
<span class="p">[</span> <span class="mi">1</span><span class="p">.</span> <span class="p">,</span> <span class="mi">2</span><span class="p">.</span> <span class="p">,</span> <span class="mi">3</span><span class="p">.</span> <span class="p">]])</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">array([[ 1. , 1. , 1. ],</span>
|
||||
<span class="err"> [ 5.58442834, -0.80511809, -1.77931025],</span>
|
||||
<span class="err"> [-1.31577211, 8.85035616, 4.46541595],</span>
|
||||
<span class="err"> [ 1. , 2. , 3. ]])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -241,7 +241,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
<div class='article_content'>
|
||||
<h3>Create a sample dataframe</h3>
|
||||
<div class="highlight"><pre><span></span><span class="c1"># Import modules</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -210,16 +210,16 @@
|
||||
<h3>Using the iterrows method</h3>
|
||||
<p>Pandas DataFrames can return a generator with the iterrrows method. It can then be used to loop over the rows of the DataFrame</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"At line {0} there is a {1} which is {2} and contains {3} kcal"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">"fruit"</span><span class="p">],</span> <span class="n">row</span><span class="p">[</span><span class="s2">"color"</span><span class="p">],</span> <span class="n">row</span><span class="p">[</span><span class="s2">"kcal"</span><span class="p">]))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"At line </span><span class="si">{0}</span><span class="s2"> there is a </span><span class="si">{1}</span><span class="s2"> which is </span><span class="si">{2}</span><span class="s2"> and contains </span><span class="si">{3}</span><span class="s2"> kcal"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">row</span><span class="p">[</span><span class="s2">"fruit"</span><span class="p">],</span> <span class="n">row</span><span class="p">[</span><span class="s2">"color"</span><span class="p">],</span> <span class="n">row</span><span class="p">[</span><span class="s2">"kcal"</span><span class="p">]))</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">At</span> <span class="n">line</span> <span class="mi">0</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">Banana</span> <span class="n">which</span> <span class="k">is</span> <span class="n">yellow</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">89</span> <span class="n">kcal</span>
|
||||
<span class="k">At</span> <span class="n">line</span> <span class="mi">1</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">Orange</span> <span class="n">which</span> <span class="k">is</span> <span class="n">orange</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">47</span> <span class="n">kcal</span>
|
||||
<span class="k">At</span> <span class="n">line</span> <span class="mi">2</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">Apple</span> <span class="n">which</span> <span class="k">is</span> <span class="n">red</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">52</span> <span class="n">kcal</span>
|
||||
<span class="k">At</span> <span class="n">line</span> <span class="mi">3</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">lemon</span> <span class="n">which</span> <span class="k">is</span> <span class="n">yellow</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">15</span> <span class="n">kcal</span>
|
||||
<span class="k">At</span> <span class="n">line</span> <span class="mi">4</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">lime</span> <span class="n">which</span> <span class="k">is</span> <span class="n">green</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">30</span> <span class="n">kcal</span>
|
||||
<span class="k">At</span> <span class="n">line</span> <span class="mi">5</span> <span class="n">there</span> <span class="k">is</span> <span class="n">a</span> <span class="n">plum</span> <span class="n">which</span> <span class="k">is</span> <span class="n">purple</span> <span class="k">and</span> <span class="k">contains</span> <span class="mi">28</span> <span class="n">kcal</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">At line 0 there is a Banana which is yellow and contains 89 kcal</span>
|
||||
<span class="err">At line 1 there is a Orange which is orange and contains 47 kcal</span>
|
||||
<span class="err">At line 2 there is a Apple which is red and contains 52 kcal</span>
|
||||
<span class="err">At line 3 there is a lemon which is yellow and contains 15 kcal</span>
|
||||
<span class="err">At line 4 there is a lime which is green and contains 30 kcal</span>
|
||||
<span class="err">At line 5 there is a plum which is purple and contains 28 kcal</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -235,7 +235,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -126,7 +126,7 @@
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<div class="highlight"><pre><span></span><span class="c1"># Import modules</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">from</span> <span class="nn">pandas_datareader</span> <span class="kn">import</span> <span class="n">data</span><span class="p">,</span> <span class="n">wb</span>
|
||||
</pre></div>
|
||||
|
||||
@ -353,7 +353,7 @@
|
||||
</div>
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">aapl</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">aapl</span><span class="o">.</span><span class="n">Open</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">'Open price'</span><span class="p">)</span>
|
||||
@ -378,7 +378,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -145,14 +145,14 @@
|
||||
<div class="highlight"><pre><span></span><span class="n">db_file</span> <span class="o">=</span> <span class="s2">".</span><span class="se">\\</span><span class="s2">mydatabase.db"</span>
|
||||
<span class="k">try</span> <span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">db_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"Connected to the database"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Connected to the database"</span><span class="p">)</span>
|
||||
<span class="c1">#your code here</span>
|
||||
<span class="k">except</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Connected</span> <span class="k">to</span> <span class="n">the</span> <span class="k">database</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Connected to the database</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -168,7 +168,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -159,11 +159,11 @@ If you try to open a non existing file in read mode 'r', a FileNotFoundError wil
|
||||
<div class="highlight"><pre><span></span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Hello</span> <span class="n">world</span> <span class="o">!</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Hello world !</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -192,7 +192,7 @@ If you try to open a non existing file in read mode 'r', a FileNotFoundError wil
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,7 +143,7 @@ conda install numpy --channel intel --override-channels
|
||||
<p>oh and by the way, make sure you a running an Intel CPU ;)</p>
|
||||
<h2>Comparing numpy.random with numpy.random_intel</h2>
|
||||
<p>Let's now test both the rand function with and without the Intel optimization</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">numpy</span> <span class="kn">import</span> <span class="n">random</span><span class="p">,</span> <span class="n">random_intel</span>
|
||||
</pre></div>
|
||||
|
||||
@ -152,7 +152,7 @@ conda install numpy --channel intel --override-channels
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">1</span>.<span class="mi">06</span> <span class="nv">ms</span> ± <span class="mi">91</span>.<span class="mi">5</span> µ<span class="nv">s</span> <span class="nv">per</span> <span class="k">loop</span> <span class="ss">(</span><span class="nv">mean</span> ± <span class="nv">std</span>. <span class="nv">dev</span>. <span class="nv">of</span> <span class="mi">7</span> <span class="nv">runs</span>, <span class="mi">1000</span> <span class="nv">loops</span> <span class="nv">each</span><span class="ss">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">1.06 ms ± 91.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -160,7 +160,7 @@ conda install numpy --channel intel --override-channels
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">225</span> µ<span class="nv">s</span> ± <span class="mi">3</span>.<span class="mi">46</span> µ<span class="nv">s</span> <span class="nv">per</span> <span class="k">loop</span> <span class="ss">(</span><span class="nv">mean</span> ± <span class="nv">std</span>. <span class="nv">dev</span>. <span class="nv">of</span> <span class="mi">7</span> <span class="nv">runs</span>, <span class="mi">1000</span> <span class="nv">loops</span> <span class="nv">each</span><span class="ss">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">225 µs ± 3.46 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -176,7 +176,7 @@ conda install numpy --channel intel --override-channels
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -175,8 +175,8 @@
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.figsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">12</span>
|
||||
|
||||
@ -187,8 +187,8 @@
|
||||
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"viscm not found, falling back on simple display"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">256</span><span class="p">)[</span><span class="bp">None</span><span class="p">,</span> <span class="p">:],</span> <span class="n">aspect</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span><span class="n">cmap</span><span class="o">=</span><span class="n">parula_map</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"viscm not found, falling back on simple display"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">256</span><span class="p">)[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:],</span> <span class="n">aspect</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span><span class="n">cmap</span><span class="o">=</span><span class="n">parula_map</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
<p>When manipulating you data using pandas, it is sometimes useful to pull data from a database. </p>
|
||||
<p>In this tutorial, we will see how to querry a dataframe from a sqlite table. Note than it would also work with any other sql database a long as you change the connxion to the one that suits your needs.</p>
|
||||
<p>First let's import pandas and sqlite3</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">sqlite3</span>
|
||||
<span class="kn">from</span> <span class="nn">sqlite3</span> <span class="kn">import</span> <span class="n">Error</span>
|
||||
</pre></div>
|
||||
@ -142,7 +142,7 @@
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_sql</span><span class="p">(</span><span class="s2">"SELECT * FROM tutyfrutty"</span><span class="p">,</span> <span class="n">conn</span><span class="p">)</span>
|
||||
<span class="k">del</span> <span class="n">df</span><span class="p">[</span><span class="s2">"index"</span><span class="p">]</span> <span class="c1">#juste delete the index column that was stored in the table</span>
|
||||
<span class="k">except</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
|
||||
<span class="n">df</span>
|
||||
</pre></div>
|
||||
@ -237,7 +237,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,8 +128,8 @@
|
||||
<h3>creating a matplotlib figure</h3>
|
||||
<div class="highlight"><pre><span></span><span class="c1">#Importing matplotlib</span>
|
||||
<span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -147,9 +147,9 @@
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'Smarts'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'Probability'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Histogram of IQ'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="o">.</span><span class="mo">025</span><span class="p">,</span> <span class="sa">r</span><span class="s1">'$\mu=100,\ \sigma=15$'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="o">.</span><span class="mi">025</span><span class="p">,</span> <span class="sa">r</span><span class="s1">'$\mu=100,\ \sigma=15$'</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">([</span><span class="mi">40</span><span class="p">,</span> <span class="mi">160</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">0.03</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="o"><</span><span class="n">matplotlib</span><span class="p">.</span><span class="n">figure</span><span class="p">.</span><span class="n">Figure</span> <span class="k">at</span> <span class="mi">0</span><span class="n">x2e45e92f400</span><span class="o">></span>
|
||||
<div class="highlight"><pre><span></span><span class="err"><matplotlib.figure.Figure at 0x2e45e92f400></span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -170,7 +170,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="o"><</span><span class="n">matplotlib</span><span class="p">.</span><span class="n">figure</span><span class="p">.</span><span class="n">Figure</span> <span class="k">at</span> <span class="mi">0</span><span class="n">x2e462164898</span><span class="o">></span>
|
||||
<div class="highlight"><pre><span></span><span class="err"><matplotlib.figure.Figure at 0x2e462164898></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -186,7 +186,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
<div class='article_content'>
|
||||
<h1>Importing Matplotlib</h1>
|
||||
<p>First we need to import pyplot, a collection of command style functions that make matplotlib work like MATLAB. Let's, as well, use the magic command %matplotlib inline in order to display the figures in the notebook</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
|
||||
<span class="c1"># this doubles image size, but we'll do it manually below</span>
|
||||
@ -140,7 +140,7 @@
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'savefig.dpi'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">300</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.dpi'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">163</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.autolayout'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.autolayout'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.figsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">12</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'axes.labelsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">18</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'axes.titlesize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">20</span>
|
||||
@ -149,10 +149,10 @@
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'lines.markersize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">8</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'legend.fontsize'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">14</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'text.usetex'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span> <span class="c1"># True activates latex output in fonts!</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'text.usetex'</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span> <span class="c1"># True activates latex output in fonts!</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'font.family'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"serif"</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'font.serif'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"cm"</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'text.latex.preamble'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">usepackage{subdepth}, </span><span class="se">\\</span><span class="s2">usepackage{type1cm}"</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'text.latex.preamble'</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">usepackage</span><span class="si">{subdepth}</span><span class="s2">, </span><span class="se">\\</span><span class="s2">usepackage</span><span class="si">{type1cm}</span><span class="s2">"</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -171,7 +171,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -130,7 +130,7 @@ Pandas provides multiple ways to export dataframes. The most common consist in e
|
||||
However, exporting to a sql database can prove very useful. Indeed, having a well structured database is a great for storing all the data related to your analysis in one place.</p>
|
||||
<p>In this tutorial, we will see how to store a dataframe in a new table of a sqlite dataframe. Note than it would also work with any other sql database a long as you change the connxion to the one that suits your needs.</p>
|
||||
<p>First let's import pandas and sqlite3</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">sqlite3</span>
|
||||
<span class="kn">from</span> <span class="nn">sqlite3</span> <span class="kn">import</span> <span class="n">Error</span>
|
||||
</pre></div>
|
||||
@ -218,9 +218,9 @@ However, exporting to a sql database can prove very useful. Indeed, having a wel
|
||||
<span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">db_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
|
||||
<span class="n">df</span><span class="o">.</span><span class="n">to_sql</span><span class="p">(</span><span class="s2">"tutyfrutty"</span><span class="p">,</span> <span class="n">conn</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span> <span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"The TABLE tutyfrutty already exists, read below to understand how to handle this case"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"The TABLE tutyfrutty already exists, read below to understand how to handle this case"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -323,7 +323,7 @@ However, exporting to a sql database can prove very useful. Indeed, having a wel
|
||||
<span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">db_file</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
|
||||
<span class="n">df</span><span class="o">.</span><span class="n">to_sql</span><span class="p">(</span><span class="s2">"tutyfrutty"</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">if_exists</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="n">Error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -339,7 +339,7 @@ However, exporting to a sql database can prove very useful. Indeed, having a wel
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -146,7 +146,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -137,7 +137,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="s1">'Lemon'</span><span class="p">:</span> <span class="s1">'yellow'</span><span class="err">}</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{'Lemon': 'yellow'}</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -144,7 +144,7 @@ myvariable: 42
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'section1'</span><span class="p">,</span> <span class="s1">'section2'</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">['section1', 'section2']</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -160,7 +160,7 @@ myvariable: 42
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -146,14 +146,14 @@ myvariable: 42
|
||||
<span class="n">myvariable</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"section2"</span><span class="p">,</span> <span class="s2">"myvariable"</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">var_a</span><span class="p">,</span> <span class="n">var_b</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">var_a</span><span class="p">,</span> <span class="n">var_b</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">myvariable</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">myvariable</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">hello</span> <span class="n">world</span>
|
||||
<span class="mi">42</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">hello world</span>
|
||||
<span class="err">42</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -169,7 +169,7 @@ myvariable: 42
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -128,11 +128,11 @@
|
||||
<h2>Using lists</h2>
|
||||
<p>If you want to count the number of occurences of an element in a list you can use the .count() function of the list object</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">7</span><span class="p">]</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'Array : {arr}</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Array : </span><span class="si">{arr}</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'The number 3 appears {arr.count(3)} times in the list'</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'The number 7 appears {arr.count(7)} times in the list'</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'The number 4 appears {arr.count(4)} times in the list'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The number 3 appears {arr.count(3)} times in the list'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The number 7 appears {arr.count(7)} times in the list'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The number 4 appears {arr.count(4)} times in the list'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -152,20 +152,20 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">Counter</span><span class="p">(</span><span class="err">{</span><span class="mi">1</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="mi">2</span><span class="err">}</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">Counter({1: 1, 2: 1, 3: 3, 4: 1, 5: 1, 6: 1, 7: 2})</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<h2>Using numpy</h2>
|
||||
<p>You can have a simular result with numpy by hacking the unique function </p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="n">arr</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">arr</span><span class="p">)</span>
|
||||
<span class="n">unique</span><span class="p">,</span> <span class="n">counts</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">return_counts</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">unique</span><span class="p">,</span> <span class="n">counts</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">return_counts</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">unique</span><span class="p">,</span> <span class="n">counts</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="mi">1</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">:</span> <span class="mi">2</span><span class="err">}</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{1: 1, 2: 1, 3: 3, 4: 1, 5: 1, 6: 1, 7: 2}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -181,7 +181,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
419
python/dask_array.html
Normal file
@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||||
<meta name="author" content="Guillaume Redoulès">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
|
||||
<title>Introduction to dask arrays - Python</title>
|
||||
|
||||
<!-- JQuery -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||||
<script>
|
||||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||||
</script>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<meta name="tags" content="Parallel" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" id="searchbar">
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="..#Blog">Blog</a></li>
|
||||
<li><a href="..#Python">Python</a></li>
|
||||
<li><a href="..#Bash">Bash</a></li>
|
||||
<li><a href="..#SQL">SQL</a></li>
|
||||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||||
<li><a href="..#Projects">Projects</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!--<li class="dropdown">
|
||||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||||
</li>-->
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||||
<div class="form-group" style="display:inline;">
|
||||
<div class="input-group" style="display:table;">
|
||||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- end of header section -->
|
||||
<div class="container">
|
||||
<!-- <div class="alert alert-warning" role="alert">
|
||||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||||
</div> -->
|
||||
<section id="content" class="body">
|
||||
<header>
|
||||
<h1>
|
||||
Introduction to dask arrays
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<time class="published" datetime="2019-12-07T19:02:00+01:00">
|
||||
07 décembre 2019
|
||||
</time>
|
||||
</li>
|
||||
<li>Python</li>
|
||||
<li>Parallel</li>
|
||||
</ol>
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<p>Dask arrays extend the numpy interface to larger than memory and parallel workflows across a distributed cluster. They look and feel a lot like numpy and use numpy under the hood.
|
||||
Indeed Dask arrays coordinate many NumPy arrays arranged into a grid. These NumPy arrays may live on disk or on other machines.</p>
|
||||
<p><img alt="daskarray" src="../images/daskarray/dask-array-black-text.svg"></p>
|
||||
<p>You can create a dask array like following. We create an array filled with 1 of lenght 15. We have to specify a chunk size.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">dask.array</span> <span class="k">as</span> <span class="nn">da</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">da</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="n">chunks</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,))</span>
|
||||
<span class="n">x</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><td> </td><th> Array </th><th> Chunk </th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><th> Bytes </th><td> 120 B </td> <td> 40 B </td></tr>
|
||||
<tr><th> Shape </th><td> (15,) </td> <td> (5,) </td></tr>
|
||||
<tr><th> Count </th><td> 3 Tasks </td><td> 3 Chunks </td></tr>
|
||||
<tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<svg width="170" height="86" style="stroke:rgb(0,0,0);stroke-width:1" >
|
||||
|
||||
<!-- Horizontal lines -->
|
||||
<line x1="0" y1="0" x2="120" y2="0" style="stroke-width:2" />
|
||||
<line x1="0" y1="36" x2="120" y2="36" style="stroke-width:2" />
|
||||
|
||||
<!-- Vertical lines -->
|
||||
<line x1="0" y1="0" x2="0" y2="36" style="stroke-width:2" />
|
||||
<line x1="40" y1="0" x2="40" y2="36" />
|
||||
<line x1="80" y1="0" x2="80" y2="36" />
|
||||
<line x1="120" y1="0" x2="120" y2="36" style="stroke-width:2" />
|
||||
|
||||
<!-- Colored Rectangle -->
|
||||
<polygon points="0.000000,0.000000 120.000000,0.000000 120.000000,36.247830 0.000000,36.247830" style="fill:#ECB172A0;stroke-width:0"/>
|
||||
|
||||
<!-- Text -->
|
||||
<text x="60.000000" y="56.247830" font-size="1.0rem" font-weight="100" text-anchor="middle" >15</text>
|
||||
<text x="140.000000" y="18.123915" font-size="1.0rem" font-weight="100" text-anchor="middle" transform="rotate(0,140.000000,18.123915)">1</text>
|
||||
</svg>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>The output is a dask array composed of 3 numpy arrays of size 5 each.
|
||||
If we try to compute the sum of all the elements of the array we won't get the result by using the <code>sum</code> method. Indeed, Dask objects are lazy by default and run the computations only when instructed.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">x</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><td> </td><th> Array </th><th> Chunk </th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><th> Bytes </th><td> 8 B </td> <td> 8 B </td></tr>
|
||||
<tr><th> Shape </th><td> () </td> <td> () </td></tr>
|
||||
<tr><th> Count </th><td> 7 Tasks </td><td> 1 Chunks </td></tr>
|
||||
<tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>We have to call compute at the end of each operation if we want the result. </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">x</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">15.0</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>The above example is pretty trival. Let's say now that we have a 10000 by 10000 array. We choose to represente that array by chunks of 1000 by 1000.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">x</span> <span class="o">=</span> <span class="n">da</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">random</span><span class="p">((</span><span class="mi">10000</span><span class="p">,</span><span class="mi">10000</span><span class="p">),</span> <span class="n">chunks</span><span class="o">=</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">))</span>
|
||||
<span class="n">x</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><td> </td><th> Array </th><th> Chunk </th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><th> Bytes </th><td> 800.00 MB </td> <td> 8.00 MB </td></tr>
|
||||
<tr><th> Shape </th><td> (10000, 10000) </td> <td> (1000, 1000) </td></tr>
|
||||
<tr><th> Count </th><td> 100 Tasks </td><td> 100 Chunks </td></tr>
|
||||
<tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<svg width="170" height="170" style="stroke:rgb(0,0,0);stroke-width:1" >
|
||||
|
||||
<!-- Horizontal lines -->
|
||||
<line x1="0" y1="0" x2="120" y2="0" style="stroke-width:2" />
|
||||
<line x1="0" y1="12" x2="120" y2="12" />
|
||||
<line x1="0" y1="24" x2="120" y2="24" />
|
||||
<line x1="0" y1="36" x2="120" y2="36" />
|
||||
<line x1="0" y1="48" x2="120" y2="48" />
|
||||
<line x1="0" y1="60" x2="120" y2="60" />
|
||||
<line x1="0" y1="72" x2="120" y2="72" />
|
||||
<line x1="0" y1="84" x2="120" y2="84" />
|
||||
<line x1="0" y1="96" x2="120" y2="96" />
|
||||
<line x1="0" y1="108" x2="120" y2="108" />
|
||||
<line x1="0" y1="120" x2="120" y2="120" style="stroke-width:2" />
|
||||
|
||||
<!-- Vertical lines -->
|
||||
<line x1="0" y1="0" x2="0" y2="120" style="stroke-width:2" />
|
||||
<line x1="12" y1="0" x2="12" y2="120" />
|
||||
<line x1="24" y1="0" x2="24" y2="120" />
|
||||
<line x1="36" y1="0" x2="36" y2="120" />
|
||||
<line x1="48" y1="0" x2="48" y2="120" />
|
||||
<line x1="60" y1="0" x2="60" y2="120" />
|
||||
<line x1="72" y1="0" x2="72" y2="120" />
|
||||
<line x1="84" y1="0" x2="84" y2="120" />
|
||||
<line x1="96" y1="0" x2="96" y2="120" />
|
||||
<line x1="108" y1="0" x2="108" y2="120" />
|
||||
<line x1="120" y1="0" x2="120" y2="120" style="stroke-width:2" />
|
||||
|
||||
<!-- Colored Rectangle -->
|
||||
<polygon points="0.000000,0.000000 120.000000,0.000000 120.000000,120.000000 0.000000,120.000000" style="fill:#ECB172A0;stroke-width:0"/>
|
||||
|
||||
<!-- Text -->
|
||||
<text x="60.000000" y="140.000000" font-size="1.0rem" font-weight="100" text-anchor="middle" >10000</text>
|
||||
<text x="140.000000" y="60.000000" font-size="1.0rem" font-weight="100" text-anchor="middle" transform="rotate(-90,140.000000,60.000000)">10000</text>
|
||||
</svg>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>Dask has created a 10 by 10 grid where each element of that list is a 1000 by 1000 numpy array.</p>
|
||||
<p>Again, we can do operations on that dataset that are very similar to the way we would do it with numpy.</p>
|
||||
<p>First let's add the array to its transpose</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">y</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Then slice the array and take the mean.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">z</span> <span class="o">=</span> <span class="n">y</span><span class="p">[::</span><span class="mi">2</span><span class="p">,</span> <span class="p">:]</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">z</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><td> </td><th> Array </th><th> Chunk </th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><th> Bytes </th><td> 40.00 kB </td> <td> 4.00 kB </td></tr>
|
||||
<tr><th> Shape </th><td> (5000,) </td> <td> (500,) </td></tr>
|
||||
<tr><th> Count </th><td> 540 Tasks </td><td> 10 Chunks </td></tr>
|
||||
<tr><th> Type </th><td> float64 </td><td> numpy.ndarray </td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
<td>
|
||||
<svg width="170" height="75" style="stroke:rgb(0,0,0);stroke-width:1" >
|
||||
|
||||
<!-- Horizontal lines -->
|
||||
<line x1="0" y1="0" x2="120" y2="0" style="stroke-width:2" />
|
||||
<line x1="0" y1="25" x2="120" y2="25" style="stroke-width:2" />
|
||||
|
||||
<!-- Vertical lines -->
|
||||
<line x1="0" y1="0" x2="0" y2="25" style="stroke-width:2" />
|
||||
<line x1="12" y1="0" x2="12" y2="25" />
|
||||
<line x1="24" y1="0" x2="24" y2="25" />
|
||||
<line x1="36" y1="0" x2="36" y2="25" />
|
||||
<line x1="48" y1="0" x2="48" y2="25" />
|
||||
<line x1="60" y1="0" x2="60" y2="25" />
|
||||
<line x1="72" y1="0" x2="72" y2="25" />
|
||||
<line x1="84" y1="0" x2="84" y2="25" />
|
||||
<line x1="96" y1="0" x2="96" y2="25" />
|
||||
<line x1="108" y1="0" x2="108" y2="25" />
|
||||
<line x1="120" y1="0" x2="120" y2="25" style="stroke-width:2" />
|
||||
|
||||
<!-- Colored Rectangle -->
|
||||
<polygon points="0.000000,0.000000 120.000000,0.000000 120.000000,25.412617 0.000000,25.412617" style="fill:#ECB172A0;stroke-width:0"/>
|
||||
|
||||
<!-- Text -->
|
||||
<text x="60.000000" y="45.412617" font-size="1.0rem" font-weight="100" text-anchor="middle" >5000</text>
|
||||
<text x="140.000000" y="12.706308" font-size="1.0rem" font-weight="100" text-anchor="middle" transform="rotate(0,140.000000,12.706308)">1</text>
|
||||
</svg>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>When we want to get access to the result, we just need to use the <code>compute</code> method and dask will compute the result in parallel on the different cores of the machine.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">z</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">array([0.99874649, 0.99722168, 0.99725464, ..., 1.00849801, 1.00448204,</span>
|
||||
<span class="err"> 0.99683664])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>In practice, dask is often used in tandem with data file formats like HDF5, zar or netcdf.</p>
|
||||
<p>In this situation you might load a file from disk and use the <code>from_array</code> function.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">h5py</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="s2">"myfile.hdf5"</span><span class="p">)</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="n">f</span><span class="p">[</span><span class="s2">"/data/path"</span><span class="p">]</span>
|
||||
<span class="n">d</span><span class="o">.</span><span class="n">shape</span>
|
||||
<span class="p">(</span><span class="mi">10000000</span><span class="p">,</span><span class="mi">1000000</span><span class="p">)</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">dask.array</span> <span class="k">as</span> <span class="nn">da</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">da</span><span class="o">.</span><span class="n">from_array</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">chunks</span><span class="o">=</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span> <span class="mi">10000</span><span class="p">))</span>
|
||||
<span class="n">x</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
<div class="bug-reporting__panel">
|
||||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
<!-- start of footer section -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
</center>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||||
<script>
|
||||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Load Google Analytics -->
|
||||
<script>
|
||||
/*
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-66582-32', 'auto');
|
||||
ga('send', 'pageview');
|
||||
*/
|
||||
</script>
|
||||
<!-- End of Google Analytics -->
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../theme/js/bootstrap.min.js"></script>
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
749
python/dask_dataframes.html
Normal file
@ -0,0 +1,749 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="Data Science for Political and Social Phenomena">
|
||||
<meta name="author" content="Guillaume Redoulès">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
|
||||
<title>Introduction to dask DataFrames - Python</title>
|
||||
|
||||
<!-- JQuery -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||||
<script>
|
||||
window.jQuery || document.write('<script src="../theme/js/jquery.min.js"><\/script>')
|
||||
</script>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link rel="stylesheet" href="../theme/css/bootstrap.css" />
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/ie10-viewport-bug-workaround.css" />
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../theme/css/notebooks.css" />
|
||||
<link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700|Roboto:400,500,700' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<meta name="tags" content="Parallel" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="..">Guillaume Redoulès</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" id="searchbar">
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">About<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="../pages/about.html">About Guillaume</a></li>
|
||||
<li><a href="https://github.com/redoules">GitHub</a></li>
|
||||
<li><a href="https://www.linkedin.com/in/guillaume-redoul%C3%A8s-33923860/">LinkedIn</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Data Science<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="..#Blog">Blog</a></li>
|
||||
<li><a href="..#Python">Python</a></li>
|
||||
<li><a href="..#Bash">Bash</a></li>
|
||||
<li><a href="..#SQL">SQL</a></li>
|
||||
<li><a href="..#Mathematics">Mathematics</a></li>
|
||||
<li><a href="..#Machine_Learning">Machine Learning</a></li>
|
||||
<li><a href="..#Projects">Projects</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Projects<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="https://github.com/redoules/redoules.github.io">Notes (Github)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<!--<li class="dropdown">
|
||||
<a href="../feeds/blog.rss.xml">Blog RSS</a>
|
||||
</li>-->
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
<form class="navbar-form" action="../search.html" onsubmit="return validateForm(this.elements['q'].value);">
|
||||
<div class="form-group" style="display:inline;">
|
||||
<div class="input-group" style="display:table;">
|
||||
<span class="input-group-addon" style="width:1%;"><span class="glyphicon glyphicon-search"></span></span>
|
||||
<input class="form-control search-query" name="q" id="tipue_search_input" placeholder="e.g. scikit KNN, pandas merge" required autocomplete="off" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- end of header section -->
|
||||
<div class="container">
|
||||
<!-- <div class="alert alert-warning" role="alert">
|
||||
Did you find this page useful? Please do me a quick favor and <a href="#" class="alert-link">endorse me for data science on LinkedIn</a>.
|
||||
</div> -->
|
||||
<section id="content" class="body">
|
||||
<header>
|
||||
<h1>
|
||||
Introduction to dask DataFrames
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<time class="published" datetime="2019-12-07T19:35:00+01:00">
|
||||
07 décembre 2019
|
||||
</time>
|
||||
</li>
|
||||
<li>Python</li>
|
||||
<li>Parallel</li>
|
||||
</ol>
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<p>Dask arrays extend the pandas interface to work on larger than memory datasets on a single machine or distributed datasets on a cluster of machines. It reuses a lot of the pandas code but extends it to larger scales.</p>
|
||||
<h3>Start with pandas</h3>
|
||||
<p>To see how that works, we start with pandas in order to show a bit later how similar the interfaces look.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"data/1.csv"</span><span class="p">)</span>
|
||||
<span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>0</th>
|
||||
<td>10000</td>
|
||||
<td>0.613648</td>
|
||||
<td>0.514523</td>
|
||||
<td>0.675306</td>
|
||||
<td>0.997480</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>1</th>
|
||||
<td>10001</td>
|
||||
<td>0.785925</td>
|
||||
<td>0.418075</td>
|
||||
<td>0.558356</td>
|
||||
<td>0.435089</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>2</th>
|
||||
<td>10002</td>
|
||||
<td>0.382117</td>
|
||||
<td>0.841691</td>
|
||||
<td>0.263298</td>
|
||||
<td>0.120973</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>3</th>
|
||||
<td>10003</td>
|
||||
<td>0.374417</td>
|
||||
<td>0.534436</td>
|
||||
<td>0.093729</td>
|
||||
<td>0.104052</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>4</th>
|
||||
<td>10004</td>
|
||||
<td>0.061580</td>
|
||||
<td>0.404272</td>
|
||||
<td>0.826618</td>
|
||||
<td>0.980229</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>Once the data is loaded, we can work on it pretty easily. For instance we can take the mean of the value column and get the result instantly.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">0.5004419057234618</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>When we want to operate on many files or if the size of the dataset is larger than memory pandas breaks down. </p>
|
||||
<h3>Read all CSV files lazily with Dask DataFrames</h3>
|
||||
<p>Intead of using pandas we will use the dask DataFrame to load the csv.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">dask.dataframe</span> <span class="k">as</span> <span class="nn">dd</span>
|
||||
|
||||
<span class="n">df</span> <span class="o">=</span> <span class="n">dd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"data/1.csv"</span><span class="p">)</span>
|
||||
<span class="n">df</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div><strong>Dask DataFrame Structure:</strong></div>
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>npartitions=1</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>int64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>Dask Name: from-delayed, 3 tasks</div>
|
||||
|
||||
<p>As you can see, the dask DataFrame didn't return any data. If we want some data we can use the <code>head</code> function.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>0</th>
|
||||
<td>10000</td>
|
||||
<td>0.613648</td>
|
||||
<td>0.514523</td>
|
||||
<td>0.675306</td>
|
||||
<td>0.997480</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>1</th>
|
||||
<td>10001</td>
|
||||
<td>0.785925</td>
|
||||
<td>0.418075</td>
|
||||
<td>0.558356</td>
|
||||
<td>0.435089</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>2</th>
|
||||
<td>10002</td>
|
||||
<td>0.382117</td>
|
||||
<td>0.841691</td>
|
||||
<td>0.263298</td>
|
||||
<td>0.120973</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>3</th>
|
||||
<td>10003</td>
|
||||
<td>0.374417</td>
|
||||
<td>0.534436</td>
|
||||
<td>0.093729</td>
|
||||
<td>0.104052</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>4</th>
|
||||
<td>10004</td>
|
||||
<td>0.061580</td>
|
||||
<td>0.404272</td>
|
||||
<td>0.826618</td>
|
||||
<td>0.980229</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p>Like previously, we can compute the mean of the value column</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">dd.Scalar<series-..., dtype=float64></span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Notice that we didn't get a full result. Indeed the dask DataFrame like every Dask objects is lazy by default. You have to use the compute function to get the result.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">0.5004419057234627</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>Another advantage of Dask DataFrames is that we can work on multiple files instead of a file at once.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">dd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"data/*.csv"</span><span class="p">)</span>
|
||||
<span class="n">df</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div><strong>Dask DataFrame Structure:</strong></div>
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>npartitions=64</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>int64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>...</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>Dask Name: from-delayed, 192 tasks</div>
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">0.5005328752185645</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<h3>Index, partitions and sorting</h3>
|
||||
<p>Every Dask DataFrames is composed of many Pandas DataFrames/Series arranged along the index. A Dask DataFrame is partitioned row-wise, grouping rows by index value for efficiency. These Pandas objects may live on disk or on other machines.</p>
|
||||
<p>All those partitions are loaded in parallel.</p>
|
||||
<p><img alt="daskdataframe" src="../images/daskdataframe/dask-dataframe.svg"></p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div><strong>Dask DataFrame Structure:</strong></div>
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>index</th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>npartitions=64</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>int64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>...</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>Dask Name: from-delayed, 192 tasks</div>
|
||||
|
||||
<p>When we look at the structure of the Dask Dataframe, we see that is is composed of 192 python functions that must be run in order to run the dask dataframe.</p>
|
||||
<p>Each of this partitions is a pandas DataFrame</p>
|
||||
<div class="highlight"><pre><span></span><span class="nb">type</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">partitions</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">compute</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">pandas.core.frame.DataFrame</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>We can write a function mapped to all the partitions of the dask dataframe in order to see that we have 64 partitions. Each of them is a pandas DataFrame.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">map_partitions</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span><span class="o">.</span><span class="n">compute</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">0 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">1 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">2 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">3 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">4 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err"> ... </span>
|
||||
<span class="err">59 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">60 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">61 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">62 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="err">63 <class 'pandas.core.frame.DataFrame'></span>
|
||||
<span class="c">Length: 64, dtype: object</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>In the df dataframe, we notice that there is a column of unique values called index. We will use this as the index of the dataframe. </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="s2">"index"</span><span class="p">)</span>
|
||||
<span class="n">df</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div><strong>Dask DataFrame Structure:</strong></div>
|
||||
|
||||
<div>
|
||||
<style scoped>
|
||||
.dataframe tbody tr th:only-of-type {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.dataframe tbody tr th {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dataframe thead th {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
<table border="1" class="dataframe">
|
||||
<thead>
|
||||
<tr style="text-align: right;">
|
||||
<th></th>
|
||||
<th>X</th>
|
||||
<th>Y</th>
|
||||
<th>Z</th>
|
||||
<th>value</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>npartitions=64</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>0</th>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
<td>float64</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>9624</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>...</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>629999</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>639999</th>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
<td>...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>Dask Name: sort_index, 642 tasks</div>
|
||||
|
||||
<p>This operation requires to load all the data in order to find the minimal and maximal values of this column.
|
||||
Thanks to this operation, if we want to get some data contained between two indices dask will know in which file to find the data and won't have to reload all the files.</p>
|
||||
<h3>Write the data to Parquet</h3>
|
||||
<p>Parquet is a columnar file format and is tightly integrated with both dask and pandas. You can you the <code>to_parquet</code> function to export the dataframe to a parquet file.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">df</span><span class="o">.</span><span class="n">to_parquet</span><span class="p">(</span><span class="s2">"data/data.parquet"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
<div class="bug-reporting__panel">
|
||||
<h3>Find an error or bug? Have a suggestion?</h3>
|
||||
<p>Everything on this site is avaliable on GitHub. Head on over and <a href='https://github.com/redoules/redoules.github.io/issues/new'>submit an issue.</a> You can also message me directly by <a href='mailto:guillaume.redoules@gadz.org'>email</a>.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
<!-- start of footer section -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
</center>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- This jQuery line finds any span that contains code highlighting classes and then selects the parent <pre> tag and adds a border. This is done as a workaround to visually distinguish the code inputs and outputs -->
|
||||
<script>
|
||||
$( ".hll, .n, .c, .err, .k, .o, .cm, .cp, .c1, .cs, .gd, .ge, .gr, .gh, .gi, .go, .gp, .gs, .gu, .gt, .kc, .kd, .kn, .kp, .kr, .kt, .m, .s, .na, .nb, .nc, .no, .nd, .ni, .ne, .nf, .nl, .nn, .nt, .nv, .ow, .w, .mf, .mh, .mi, .mo, .sb, .sc, .sd, .s2, .se, .sh, .si, .sx, .sr, .s1, .ss, .bp, .vc, .vg, .vi, .il" ).parent( "pre" ).css( "border", "1px solid #DEDEDE" );
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Load Google Analytics -->
|
||||
<script>
|
||||
/*
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-66582-32', 'auto');
|
||||
ga('send', 'pageview');
|
||||
*/
|
||||
</script>
|
||||
<!-- End of Google Analytics -->
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../theme/js/bootstrap.min.js"></script>
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<script src="../theme/js/ie10-viewport-bug-workaround.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -164,8 +164,8 @@
|
||||
<h2>Use the dask workers within your python code</h2>
|
||||
<p>We will now see how to submit multiple calls to a fucntion in parallel on the dask-workers.
|
||||
Import the required libraries and define the function to be executed.</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">from</span> <span class="nn">distributed</span> <span class="kn">import</span> <span class="n">Client</span>
|
||||
|
||||
|
||||
@ -288,8 +288,8 @@ http://127.0.0.1:8787/status</p>
|
||||
|
||||
<p>There, we have completed a simple example on how to use dask to run multiple functions in parallel.</p>
|
||||
<p>Full source code:</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">from</span> <span class="nn">distributed</span> <span class="kn">import</span> <span class="n">Client</span>
|
||||
|
||||
|
||||
@ -338,7 +338,7 @@ http://127.0.0.1:8787/status</p>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -127,12 +127,12 @@
|
||||
<div class='article_content'>
|
||||
<p>InfiniBand (abbreviated IB) is a computer-networking communications standard used in high-performance computing that features very high throughput and very low latency. It is used for data interconnect both among and within computers. InfiniBand is also used as either a direct or switched interconnect between servers and storage systems, as well as an interconnect between storage systems. (source Wikipedia).</p>
|
||||
<p>If you want to leverage this high speed network instead of the regular ethernet network, you have to specify to the scheduler that you want to used infiniband as your interface. Assuming that you Infiniband interface is <code>ib0</code>, you would call the scheduler like this :</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">dask</span><span class="o">-</span><span class="n">scheduler</span> <span class="c1">--interface ib0 --scheduler-file ./cluster.yaml</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">dask-scheduler --interface ib0 --scheduler-file ./cluster.yaml</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>you would have to call the worker using the same interface :</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">dask</span><span class="o">-</span><span class="n">worker</span> <span class="c1">--interface ib0 --scheduler-file ./cluster.yaml</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">dask-worker --interface ib0 --scheduler-file ./cluster.yaml</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -148,7 +148,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -154,7 +154,7 @@
|
||||
|
||||
<p>You can also add some helpful text to guide your users along the way:</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">AgeInvalidError</span><span class="p">(</span><span class="ne">ValueError</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"Age invalid, must be between 0 and 130"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Age invalid, must be between 0 and 130"</span><span class="p">)</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">def</span> <span class="nf">check_age</span><span class="p">(</span><span class="n">age</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">age</span> <span class="o"><</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">age</span> <span class="o">></span> <span class="mi">130</span><span class="p">:</span>
|
||||
@ -182,13 +182,13 @@
|
||||
<h2>Structure your repository</h2>
|
||||
<p>You should have a file structure in your repository. It will help other contributers especially future contributers.</p>
|
||||
<p>A nice directory structure for your project should look like this:</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">README</span><span class="p">.</span><span class="n">md</span>
|
||||
<span class="n">LICENSE</span>
|
||||
<span class="n">setup</span><span class="p">.</span><span class="n">py</span>
|
||||
<span class="n">requirements</span><span class="p">.</span><span class="n">txt</span>
|
||||
<span class="p">.</span><span class="o">/</span><span class="n">MyPackage</span>
|
||||
<span class="p">.</span><span class="o">/</span><span class="n">docs</span>
|
||||
<span class="p">.</span><span class="o">/</span><span class="n">tests</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">README.md</span>
|
||||
<span class="err">LICENSE</span>
|
||||
<span class="err">setup.py</span>
|
||||
<span class="err">requirements.txt</span>
|
||||
<span class="err">./MyPackage</span>
|
||||
<span class="err">./docs</span>
|
||||
<span class="err">./tests</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -232,7 +232,7 @@ The list of dependencies required to test, build and generate the doc are listed
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -133,22 +133,22 @@
|
||||
<p>In the example bellow we use the dictionnary comprehension to build a dictonnary from a source list.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">iterable</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
|
||||
<span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> <span class="n">value</span><span class="o">**</span><span class="mi">2</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">}</span> <span class="c1"># create a dictionnary linking the string value of a number with the square value of this number</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="s1">'0'</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="s1">'3'</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span> <span class="s1">'4'</span><span class="p">:</span> <span class="mi">16</span><span class="p">,</span> <span class="s1">'5'</span><span class="p">:</span> <span class="mi">25</span><span class="p">,</span> <span class="s1">'6'</span><span class="p">:</span> <span class="mi">36</span><span class="p">,</span> <span class="s1">'7'</span><span class="p">:</span> <span class="mi">49</span><span class="p">,</span> <span class="s1">'8'</span><span class="p">:</span> <span class="mi">64</span><span class="p">,</span> <span class="s1">'9'</span><span class="p">:</span> <span class="mi">81</span><span class="err">}</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{'0': 0, '1': 1, '2': 4, '3': 9, '4': 16, '5': 25, '6': 36, '7': 49, '8': 64, '9': 81}</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>of course, you can use an other iterable an repack it with the comprehension syntaxe. In the following example, we convert a list of tuples in a dictonnary.</p>
|
||||
<div class="highlight"><pre><span></span><span class="n">iterable</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"France"</span><span class="p">,</span><span class="mf">67.12e6</span><span class="p">),</span> <span class="p">(</span><span class="s2">"UK"</span><span class="p">,</span><span class="mf">66.02e6</span><span class="p">),</span> <span class="p">(</span><span class="s2">"USA"</span><span class="p">,</span><span class="mf">325.7e6</span><span class="p">),</span> <span class="p">(</span><span class="s2">"China"</span><span class="p">,</span><span class="mf">1386e6</span><span class="p">),</span> <span class="p">(</span><span class="s2">"Germany"</span><span class="p">,</span><span class="mf">82.79e6</span><span class="p">)]</span>
|
||||
<span class="n">population</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span> <span class="k">for</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">}</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">population</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">population</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="s1">'France'</span><span class="p">:</span> <span class="mi">67120000</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'UK'</span><span class="p">:</span> <span class="mi">66020000</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'USA'</span><span class="p">:</span> <span class="mi">325700000</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'China'</span><span class="p">:</span> <span class="mi">1386000000</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'Germany'</span><span class="p">:</span> <span class="mi">82790000</span><span class="p">.</span><span class="mi">0</span><span class="err">}</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{'France': 67120000.0, 'UK': 66020000.0, 'USA': 325700000.0, 'China': 1386000000.0, 'Germany': 82790000.0}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -164,7 +164,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -139,11 +139,11 @@
|
||||
|
||||
|
||||
<p>The source code will be stored in the variable page as a string </p>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="nv">b</span><span class="s1">'</span><span class="s"><!doctype html></span><span class="se">\n</span><span class="s"><html></span><span class="se">\n</span><span class="s"><head></span><span class="se">\n</span><span class="s"> <title>Example Domain</title></span><span class="se">\n\n</span><span class="s"> <meta charset="utf-8" /></span><span class="se">\n</span><span class="s"> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /></span><span class="se">\n</span><span class="s"> <meta name="viewport" content="width=device-width, initial-scale=1" /></span><span class="se">\n</span><span class="s"> <style type="text/css"></span><span class="se">\n</span><span class="s"> body {</span><span class="se">\n</span><span class="s"> background-color: #f0f0f2;</span><span class="se">\n</span><span class="s"> margin: 0;</span><span class="se">\n</span><span class="s"> padding: 0;</span><span class="se">\n</span><span class="s"> font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;</span><span class="se">\n</span><span class="s"> </span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> div {</span><span class="se">\n</span><span class="s"> width: 600px;</span><span class="se">\n</span><span class="s"> margin: 5em auto;</span><span class="se">\n</span><span class="s"> padding: 50px;</span><span class="se">\n</span><span class="s"> background-color: #fff;</span><span class="se">\n</span><span class="s"> border-radius: 1em;</span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> a:link, a:visited {</span><span class="se">\n</span><span class="s"> color: #38488f;</span><span class="se">\n</span><span class="s"> text-decoration: none;</span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> @media (max-width: 700px) {</span><span class="se">\n</span><span class="s"> body {</span><span class="se">\n</span><span class="s"> background-color: #fff;</span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> div {</span><span class="se">\n</span><span class="s"> width: auto;</span><span class="se">\n</span><span class="s"> margin: 0 auto;</span><span class="se">\n</span><span class="s"> border-radius: 0;</span><span class="se">\n</span><span class="s"> padding: 1em;</span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> }</span><span class="se">\n</span><span class="s"> </style> </span><span class="se">\n</span><span class="s"></head></span><span class="se">\n\n</span><span class="s"><body></span><span class="se">\n</span><span class="s"><div></span><span class="se">\n</span><span class="s"> <h1>Example Domain</h1></span><span class="se">\n</span><span class="s"> <p>This domain is established to be used for illustrative examples in documents. You may use this</span><span class="se">\n</span><span class="s"> domain in examples without prior coordination or asking for permission.</p></span><span class="se">\n</span><span class="s"> <p><a href="http://www.iana.org/domains/example">More information...</a></p></span><span class="se">\n</span><span class="s"></div></span><span class="se">\n</span><span class="s"></body></span><span class="se">\n</span><span class="s"></html></span><span class="se">\n</span><span class="s1">'</span>
|
||||
<div class="highlight"><pre><span></span>b'<span class="cp"><!doctype html></span>\n<span class="nt"><html></span>\n<span class="nt"><head></span>\n <span class="nt"><title></span>Example Domain<span class="nt"></title></span>\n\n <span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>\n <span class="nt"><meta</span> <span class="na">http-equiv=</span><span class="s">"Content-type"</span> <span class="na">content=</span><span class="s">"text/html; charset=utf-8"</span> <span class="nt">/></span>\n <span class="nt"><meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"width=device-width, initial-scale=1"</span> <span class="nt">/></span>\n <span class="nt"><style</span> <span class="na">type=</span><span class="s">"text/css"</span><span class="nt">></span>\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 50px;\n background-color: #fff;\n border-radius: 1em;\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n body {\n background-color: #fff;\n }\n div {\n width: auto;\n margin: 0 auto;\n border-radius: 0;\n padding: 1em;\n }\n }\n <span class="nt"></style></span> \n<span class="nt"></head></span>\n\n<span class="nt"><body></span>\n<span class="nt"><div></span>\n <span class="nt"><h1></span>Example Domain<span class="nt"></h1></span>\n <span class="nt"><p></span>This domain is established to be used for illustrative examples in documents. You may use this\n domain in examples without prior coordination or asking for permission.<span class="nt"></p></span>\n <span class="nt"><p><a</span> <span class="na">href=</span><span class="s">"http://www.iana.org/domains/example"</span><span class="nt">></span>More information...<span class="nt"></a></p></span>\n<span class="nt"></div></span>\n<span class="nt"></body></span>\n<span class="nt"></html></span>\n'
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -151,58 +151,58 @@
|
||||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">bs4</span> <span class="kn">import</span> <span class="n">BeautifulSoup</span>
|
||||
<span class="n">soup</span> <span class="o">=</span> <span class="n">BeautifulSoup</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s1">'lxml'</span><span class="p">)</span>
|
||||
<span class="n">soup</span><span class="o">.</span><span class="n">prettify</span><span class="p">()</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">soup</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">soup</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="o"><!</span><span class="nv">DOCTYPE</span> <span class="nv">html</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">html</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">head</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">title</span><span class="o">></span><span class="nv">Example</span> <span class="nv">Domain</span><span class="o"></</span><span class="nv">title</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">meta</span> <span class="nv">charset</span><span class="o">=</span><span class="s2">"</span><span class="s">utf-8</span><span class="s2">"</span><span class="o">/></span>
|
||||
<span class="o"><</span><span class="nv">meta</span> <span class="nv">content</span><span class="o">=</span><span class="s2">"</span><span class="s">text/html; charset=utf-8</span><span class="s2">"</span> <span class="nv">http</span><span class="o">-</span><span class="nv">equiv</span><span class="o">=</span><span class="s2">"</span><span class="s">Content-type</span><span class="s2">"</span><span class="o">/></span>
|
||||
<span class="o"><</span><span class="nv">meta</span> <span class="nv">content</span><span class="o">=</span><span class="s2">"</span><span class="s">width=device-width, initial-scale=1</span><span class="s2">"</span> <span class="nv">name</span><span class="o">=</span><span class="s2">"</span><span class="s">viewport</span><span class="s2">"</span><span class="o">/></span>
|
||||
<span class="o"><</span><span class="nv">style</span> <span class="nv">type</span><span class="o">=</span><span class="s2">"</span><span class="s">text/css</span><span class="s2">"</span><span class="o">></span>
|
||||
<span class="nv">body</span> {
|
||||
<span class="nv">background</span><span class="o">-</span><span class="nv">color</span>: #<span class="nv">f0f0f2</span><span class="c1">;</span>
|
||||
<span class="nv">margin</span>: <span class="mi">0</span><span class="c1">;</span>
|
||||
<span class="nv">padding</span>: <span class="mi">0</span><span class="c1">;</span>
|
||||
<span class="nv">font</span><span class="o">-</span><span class="nv">family</span>: <span class="s2">"</span><span class="s">Open Sans</span><span class="s2">"</span>, <span class="s2">"</span><span class="s">Helvetica Neue</span><span class="s2">"</span>, <span class="nv">Helvetica</span>, <span class="nv">Arial</span>, <span class="nv">sans</span><span class="o">-</span><span class="nv">serif</span><span class="c1">;</span>
|
||||
<div class="highlight"><pre><span></span><span class="cp"><!DOCTYPE html></span>
|
||||
<span class="p"><</span><span class="nt">html</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">head</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">title</span><span class="p">></span>Example Domain<span class="p"></</span><span class="nt">title</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">"utf-8"</span><span class="p">/></span>
|
||||
<span class="p"><</span><span class="nt">meta</span> <span class="na">content</span><span class="o">=</span><span class="s">"text/html; charset=utf-8"</span> <span class="na">http-equiv</span><span class="o">=</span><span class="s">"Content-type"</span><span class="p">/></span>
|
||||
<span class="p"><</span><span class="nt">meta</span> <span class="na">content</span><span class="o">=</span><span class="s">"width=device-width, initial-scale=1"</span> <span class="na">name</span><span class="o">=</span><span class="s">"viewport"</span><span class="p">/></span>
|
||||
<span class="p"><</span><span class="nt">style</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/css"</span><span class="p">></span>
|
||||
<span class="nt">body</span> <span class="p">{</span>
|
||||
<span class="k">background-color</span><span class="p">:</span> <span class="mh">#f0f0f2</span><span class="p">;</span>
|
||||
<span class="k">margin</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="k">padding</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="k">font-family</span><span class="p">:</span> <span class="s2">"Open Sans"</span><span class="p">,</span> <span class="s2">"Helvetica Neue"</span><span class="p">,</span> <span class="n">Helvetica</span><span class="p">,</span> <span class="n">Arial</span><span class="p">,</span> <span class="kc">sans-serif</span><span class="p">;</span>
|
||||
|
||||
}
|
||||
<span class="nv">div</span> {
|
||||
<span class="nv">width</span>: <span class="mi">600</span><span class="nv">px</span><span class="c1">;</span>
|
||||
<span class="nv">margin</span>: <span class="mi">5</span><span class="nv">em</span> <span class="nv">auto</span><span class="c1">;</span>
|
||||
<span class="nv">padding</span>: <span class="mi">50</span><span class="nv">px</span><span class="c1">;</span>
|
||||
<span class="nv">background</span><span class="o">-</span><span class="nv">color</span>: #<span class="nv">fff</span><span class="c1">;</span>
|
||||
<span class="nv">border</span><span class="o">-</span><span class="nv">radius</span>: <span class="mi">1</span><span class="nv">em</span><span class="c1">;</span>
|
||||
}
|
||||
<span class="nv">a</span>:<span class="nv">link</span>, <span class="nv">a</span>:<span class="nv">visited</span> {
|
||||
<span class="nv">color</span>: <span class="sc">#38488</span><span class="nv">f</span><span class="c1">;</span>
|
||||
<span class="nv">text</span><span class="o">-</span><span class="nv">decoration</span>: <span class="nv">none</span><span class="c1">;</span>
|
||||
}
|
||||
@<span class="nv">media</span> <span class="ss">(</span><span class="nv">max</span><span class="o">-</span><span class="nv">width</span>: <span class="mi">700</span><span class="nv">px</span><span class="ss">)</span> {
|
||||
<span class="nv">body</span> {
|
||||
<span class="nv">background</span><span class="o">-</span><span class="nv">color</span>: #<span class="nv">fff</span><span class="c1">;</span>
|
||||
}
|
||||
<span class="nv">div</span> {
|
||||
<span class="nv">width</span>: <span class="nv">auto</span><span class="c1">;</span>
|
||||
<span class="nv">margin</span>: <span class="mi">0</span> <span class="nv">auto</span><span class="c1">;</span>
|
||||
<span class="nv">border</span><span class="o">-</span><span class="nv">radius</span>: <span class="mi">0</span><span class="c1">;</span>
|
||||
<span class="nv">padding</span>: <span class="mi">1</span><span class="nv">em</span><span class="c1">;</span>
|
||||
}
|
||||
}
|
||||
<span class="o"></</span><span class="nv">style</span><span class="o">></span>
|
||||
<span class="o"></</span><span class="nv">head</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">body</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">div</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">h1</span><span class="o">></span><span class="nv">Example</span> <span class="nv">Domain</span><span class="o"></</span><span class="nv">h1</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">p</span><span class="o">></span><span class="nv">This</span> <span class="nv">domain</span> <span class="nv">is</span> <span class="nv">established</span> <span class="nv">to</span> <span class="nv">be</span> <span class="nv">used</span> <span class="k">for</span> <span class="nv">illustrative</span> <span class="nv">examples</span> <span class="nv">in</span> <span class="nv">documents</span>. <span class="nv">You</span> <span class="nv">may</span> <span class="nv">use</span> <span class="nv">this</span>
|
||||
<span class="nv">domain</span> <span class="nv">in</span> <span class="nv">examples</span> <span class="nv">without</span> <span class="nv">prior</span> <span class="nv">coordination</span> <span class="nv">or</span> <span class="nv">asking</span> <span class="k">for</span> <span class="nv">permission</span>.<span class="o"></</span><span class="nv">p</span><span class="o">></span>
|
||||
<span class="o"><</span><span class="nv">p</span><span class="o">><</span><span class="nv">a</span> <span class="nv">href</span><span class="o">=</span><span class="s2">"</span><span class="s">http://www.iana.org/domains/example</span><span class="s2">"</span><span class="o">></span><span class="nv">More</span> <span class="nv">information</span>...<span class="o"></</span><span class="nv">a</span><span class="o">></</span><span class="nv">p</span><span class="o">></span>
|
||||
<span class="o"></</span><span class="nv">div</span><span class="o">></span>
|
||||
<span class="o"></</span><span class="nv">body</span><span class="o">></span>
|
||||
<span class="o"></</span><span class="nv">html</span><span class="o">></span>
|
||||
<span class="p">}</span>
|
||||
<span class="nt">div</span> <span class="p">{</span>
|
||||
<span class="k">width</span><span class="p">:</span> <span class="mi">600</span><span class="kt">px</span><span class="p">;</span>
|
||||
<span class="k">margin</span><span class="p">:</span> <span class="mi">5</span><span class="kt">em</span> <span class="kc">auto</span><span class="p">;</span>
|
||||
<span class="k">padding</span><span class="p">:</span> <span class="mi">50</span><span class="kt">px</span><span class="p">;</span>
|
||||
<span class="k">background-color</span><span class="p">:</span> <span class="mh">#fff</span><span class="p">;</span>
|
||||
<span class="k">border-radius</span><span class="p">:</span> <span class="mi">1</span><span class="kt">em</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nt">a</span><span class="p">:</span><span class="nd">link</span><span class="o">,</span> <span class="nt">a</span><span class="p">:</span><span class="nd">visited</span> <span class="p">{</span>
|
||||
<span class="k">color</span><span class="p">:</span> <span class="mh">#38488f</span><span class="p">;</span>
|
||||
<span class="k">text-decoration</span><span class="p">:</span> <span class="kc">none</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">@</span><span class="k">media</span> <span class="o">(</span><span class="nt">max-width</span><span class="o">:</span> <span class="nt">700px</span><span class="o">)</span> <span class="p">{</span>
|
||||
<span class="nt">body</span> <span class="p">{</span>
|
||||
<span class="k">background-color</span><span class="p">:</span> <span class="mh">#fff</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="nt">div</span> <span class="p">{</span>
|
||||
<span class="k">width</span><span class="p">:</span> <span class="kc">auto</span><span class="p">;</span>
|
||||
<span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="kc">auto</span><span class="p">;</span>
|
||||
<span class="k">border-radius</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
|
||||
<span class="k">padding</span><span class="p">:</span> <span class="mi">1</span><span class="kt">em</span><span class="p">;</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p"></</span><span class="nt">style</span><span class="p">></span>
|
||||
<span class="p"></</span><span class="nt">head</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">body</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">div</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Example Domain<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">p</span><span class="p">></span>This domain is established to be used for illustrative examples in documents. You may use this
|
||||
domain in examples without prior coordination or asking for permission.<span class="p"></</span><span class="nt">p</span><span class="p">></span>
|
||||
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">a</span> <span class="na">href</span><span class="o">=</span><span class="s">"http://www.iana.org/domains/example"</span><span class="p">></span>More information...<span class="p"></</span><span class="nt">a</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
|
||||
<span class="p"></</span><span class="nt">div</span><span class="p">></span>
|
||||
<span class="p"></</span><span class="nt">body</span><span class="p">></span>
|
||||
<span class="p"></</span><span class="nt">html</span><span class="p">></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -218,7 +218,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
<div class='article_content'>
|
||||
<h2>Safely creating a folder if it doesn't exist</h2>
|
||||
<p>When you are writing to files in python, if the file doesn't exist it will be created. However, if you are trying to write a file in a directory that doesn't exist, an exception will be returned </p>
|
||||
<div class="highlight"><pre><span></span><span class="n">FileNotFoundError</span><span class="p">:</span> <span class="p">[</span><span class="n">Errno</span> <span class="mi">2</span><span class="p">]</span> <span class="n">No</span> <span class="n">such</span> <span class="nb">file</span> <span class="ow">or</span> <span class="n">directory</span><span class="p">:</span> <span class="s2">"directory"</span>
|
||||
<div class="highlight"><pre><span></span><span class="ne">FileNotFoundError</span><span class="p">:</span> <span class="p">[</span><span class="n">Errno</span> <span class="mi">2</span><span class="p">]</span> <span class="n">No</span> <span class="n">such</span> <span class="n">file</span> <span class="ow">or</span> <span class="n">directory</span><span class="p">:</span> <span class="s2">"directory"</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -139,7 +139,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">False</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">False</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">True</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">True</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -177,7 +177,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="s1">'2019-11-04 14-35-54'</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">'2019-11-04 14-35-54'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -151,7 +151,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -130,19 +130,19 @@
|
||||
<span class="kn">import</span> <span class="nn">win32con</span>
|
||||
<span class="kn">import</span> <span class="nn">win32security</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">owner</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
|
||||
<span class="n">sd</span> <span class="o">=</span> <span class="n">win32security</span><span class="o">.</span><span class="n">GetFileSecurity</span> <span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">win32security</span><span class="o">.</span><span class="n">OWNER_SECURITY_INFORMATION</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">owner</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
|
||||
<span class="n">sd</span> <span class="o">=</span> <span class="n">win32security</span><span class="o">.</span><span class="n">GetFileSecurity</span> <span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">win32security</span><span class="o">.</span><span class="n">OWNER_SECURITY_INFORMATION</span><span class="p">)</span>
|
||||
<span class="n">owner_sid</span> <span class="o">=</span> <span class="n">sd</span><span class="o">.</span><span class="n">GetSecurityDescriptorOwner</span> <span class="p">()</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">domain</span><span class="p">,</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">win32security</span><span class="o">.</span><span class="n">LookupAccountSid</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">owner_sid</span><span class="p">)</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">domain</span><span class="p">,</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">win32security</span><span class="o">.</span><span class="n">LookupAccountSid</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">owner_sid</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="n">domain</span><span class="p">)</span>
|
||||
|
||||
<span class="n">filename</span> <span class="o">=</span> <span class="s2">"my.file"</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s2">"The owner of the file {filename} is {owner(filename)[0]}"</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The owner of the file </span><span class="si">{filename}</span><span class="s2"> is {owner(filename)[0]}"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">The</span> <span class="k">owner</span> <span class="k">of</span> <span class="n">the</span> <span class="n">file</span> <span class="n">my</span><span class="p">.</span><span class="n">file</span> <span class="k">is</span> <span class="n">my</span><span class="p">.</span><span class="k">user</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">The owner of the file my.file is my.user</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -158,7 +158,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -126,7 +126,7 @@
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<p>In this article we will use sets to compute the intersection of 2 numpy arrays</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="n">array2a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">]])</span>
|
||||
<span class="n">array2b</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">]])</span>
|
||||
@ -139,7 +139,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span><span class="err">}</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{(2, 1), (3, 3)}</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -159,7 +159,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -136,7 +136,7 @@
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="s1">'{key} : {value}'</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'</span><span class="si">{key}</span><span class="s1"> : </span><span class="si">{value}</span><span class="s1">'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -158,7 +158,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -137,7 +137,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'logfile.log'</span><span class="p">,</span> <span class="s1">'myfile.txt'</span><span class="p">,</span> <span class="s1">'super_music.mp3'</span><span class="p">,</span> <span class="s1">'textfile.txt'</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">['logfile.log', 'myfile.txt', 'super_music.mp3', 'textfile.txt']</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -147,7 +147,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'myfile.txt'</span><span class="p">,</span> <span class="s1">'textfile.txt'</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">['myfile.txt', 'textfile.txt']</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -159,20 +159,20 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'myfile.txt'</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">['myfile.txt']</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<h2>Listing files recusively</h2>
|
||||
<p>If you want to list all files recursively you can select all the sub-directories using the "**" wildcard</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">glob</span>
|
||||
<span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">mypath</span> <span class="o">+</span> <span class="s1">'/**/*.txt'</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="n">mypath</span> <span class="o">+</span> <span class="s1">'/**/*.txt'</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'./test_directory\\myfile.txt'</span><span class="p">,</span>
|
||||
<span class="s1">'./test_directory\\textfile.txt'</span><span class="p">,</span>
|
||||
<span class="s1">'./test_directory\\subdir1\\file_hidden_in_a_sub_direcotry.txt'</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">['./test_directory\\myfile.txt',</span>
|
||||
<span class="err"> './test_directory\\textfile.txt',</span>
|
||||
<span class="err"> './test_directory\\subdir1\\file_hidden_in_a_sub_direcotry.txt']</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -183,9 +183,9 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/myfile.txt'</span><span class="p">),</span>
|
||||
<span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/textfile.txt'</span><span class="p">),</span>
|
||||
<span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/subdir1/file_hidden_in_a_sub_direcotry.txt'</span><span class="p">)]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">[WindowsPath('test_directory/myfile.txt'),</span>
|
||||
<span class="err"> WindowsPath('test_directory/textfile.txt'),</span>
|
||||
<span class="err"> WindowsPath('test_directory/subdir1/file_hidden_in_a_sub_direcotry.txt')]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -194,10 +194,10 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="p">[</span><span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/logfile.log'</span><span class="p">),</span>
|
||||
<span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/myfile.txt'</span><span class="p">),</span>
|
||||
<span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/textfile.txt'</span><span class="p">),</span>
|
||||
<span class="n">WindowsPath</span><span class="p">(</span><span class="s1">'test_directory/subdir1/file_hidden_in_a_sub_direcotry.txt'</span><span class="p">)]</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">[WindowsPath('test_directory/logfile.log'),</span>
|
||||
<span class="err"> WindowsPath('test_directory/myfile.txt'),</span>
|
||||
<span class="err"> WindowsPath('test_directory/textfile.txt'),</span>
|
||||
<span class="err"> WindowsPath('test_directory/subdir1/file_hidden_in_a_sub_direcotry.txt')]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -213,7 +213,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -149,59 +149,59 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="err">{</span><span class="s1">''</span><span class="p">:</span> <span class="mi">3802422</span><span class="p">,</span>
|
||||
<span class="s1">'Forcepad driver tray window'</span><span class="p">:</span> <span class="mi">65676</span><span class="p">,</span>
|
||||
<span class="s1">'Jauge de batterie'</span><span class="p">:</span> <span class="mi">131542</span><span class="p">,</span>
|
||||
<span class="s1">'Network Flyout'</span><span class="p">:</span> <span class="mi">131650</span><span class="p">,</span>
|
||||
<span class="s1">'Dashlane'</span><span class="p">:</span> <span class="mi">5570658</span><span class="p">,</span>
|
||||
<span class="s1">'Wox'</span><span class="p">:</span> <span class="mi">131770</span><span class="p">,</span>
|
||||
<span class="s1">'JupyterLab - Brave'</span><span class="p">:</span> <span class="mi">66990</span><span class="p">,</span>
|
||||
<span class="s1">'python'</span><span class="p">:</span> <span class="mi">4261478</span><span class="p">,</span>
|
||||
<span class="s1">'Visual Studio Code - Insiders'</span><span class="p">:</span> <span class="mi">329780</span><span class="p">,</span>
|
||||
<span class="s1">'Code - Insiders'</span><span class="p">:</span> <span class="mi">526478</span><span class="p">,</span>
|
||||
<span class="s1">'Documents'</span><span class="p">:</span> <span class="mi">526010</span><span class="p">,</span>
|
||||
<span class="s1">'Windows PowerShell'</span><span class="p">:</span> <span class="mi">198580</span><span class="p">,</span>
|
||||
<span class="s1">'Progression'</span><span class="p">:</span> <span class="mi">394934</span><span class="p">,</span>
|
||||
<span class="s1">'Microsoft Edge'</span><span class="p">:</span> <span class="mi">131586</span><span class="p">,</span>
|
||||
<span class="s1">'Microsoft Store'</span><span class="p">:</span> <span class="mi">197328</span><span class="p">,</span>
|
||||
<span class="s1">'QTrayIconMessageWindow'</span><span class="p">:</span> <span class="mi">327816</span><span class="p">,</span>
|
||||
<span class="s1">'Hidden Window'</span><span class="p">:</span> <span class="mi">459506</span><span class="p">,</span>
|
||||
<span class="s1">'.NET-BroadcastEventWindow.4.0.0.0.3e2c690.0'</span><span class="p">:</span> <span class="mi">131824</span><span class="p">,</span>
|
||||
<span class="s1">'SystemResourceNotifyWindow'</span><span class="p">:</span> <span class="mi">197346</span><span class="p">,</span>
|
||||
<span class="s1">'MediaContextNotificationWindow'</span><span class="p">:</span> <span class="mi">197344</span><span class="p">,</span>
|
||||
<span class="s1">'Resilio Sync 2.6.3'</span><span class="p">:</span> <span class="mi">262934</span><span class="p">,</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">{'': 3802422,</span>
|
||||
<span class="err"> 'Forcepad driver tray window': 65676,</span>
|
||||
<span class="err"> 'Jauge de batterie': 131542,</span>
|
||||
<span class="err"> 'Network Flyout': 131650,</span>
|
||||
<span class="err"> 'Dashlane': 5570658,</span>
|
||||
<span class="err"> 'Wox': 131770,</span>
|
||||
<span class="err"> 'JupyterLab - Brave': 66990,</span>
|
||||
<span class="err"> 'python': 4261478,</span>
|
||||
<span class="err"> 'Visual Studio Code - Insiders': 329780,</span>
|
||||
<span class="err"> 'Code - Insiders': 526478,</span>
|
||||
<span class="err"> 'Documents': 526010,</span>
|
||||
<span class="err"> 'Windows PowerShell': 198580,</span>
|
||||
<span class="err"> 'Progression': 394934,</span>
|
||||
<span class="err"> 'Microsoft Edge': 131586,</span>
|
||||
<span class="err"> 'Microsoft Store': 197328,</span>
|
||||
<span class="err"> 'QTrayIconMessageWindow': 327816,</span>
|
||||
<span class="err"> 'Hidden Window': 459506,</span>
|
||||
<span class="err"> '.NET-BroadcastEventWindow.4.0.0.0.3e2c690.0': 131824,</span>
|
||||
<span class="err"> 'SystemResourceNotifyWindow': 197346,</span>
|
||||
<span class="err"> 'MediaContextNotificationWindow': 197344,</span>
|
||||
<span class="err"> 'Resilio Sync 2.6.3': 262934,</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>}</p>
|
||||
<div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="s2">"List of all opened windows : "</span><span class="p">)</span>
|
||||
<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"List of all opened windows : "</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">get_all_windows</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="n">key</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\t</span><span class="s2">* "</span> <span class="o">+</span> <span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\t</span><span class="s2">* "</span> <span class="o">+</span> <span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="n">List</span> <span class="k">of</span> <span class="k">all</span> <span class="n">opened</span> <span class="n">windows</span> <span class="p">:</span>
|
||||
<span class="o">*</span> <span class="n">Forcepad</span> <span class="n">driver</span> <span class="n">tray</span> <span class="n">window</span>
|
||||
<span class="o">*</span> <span class="n">Jauge</span> <span class="n">de</span> <span class="n">batterie</span>
|
||||
<span class="o">*</span> <span class="n">Network</span> <span class="n">Flyout</span>
|
||||
<span class="o">*</span> <span class="n">Dashlane</span>
|
||||
<span class="o">*</span> <span class="n">Wox</span>
|
||||
<span class="o">*</span> <span class="n">JupyterLab</span> <span class="o">-</span> <span class="n">Brave</span>
|
||||
<span class="o">*</span> <span class="n">python</span>
|
||||
<span class="o">*</span> <span class="n">Visual</span> <span class="n">Studio</span> <span class="n">Code</span> <span class="o">-</span> <span class="n">Insiders</span>
|
||||
<span class="o">*</span> <span class="n">Code</span> <span class="o">-</span> <span class="n">Insiders</span>
|
||||
<span class="o">*</span> <span class="n">Documents</span>
|
||||
<span class="o">*</span> <span class="n">Windows</span> <span class="n">PowerShell</span>
|
||||
<span class="o">*</span> <span class="n">Progression</span>
|
||||
<span class="o">*</span> <span class="n">Microsoft</span> <span class="n">Edge</span>
|
||||
<span class="o">*</span> <span class="n">Microsoft</span> <span class="n">Store</span>
|
||||
<span class="o">*</span> <span class="n">QTrayIconMessageWindow</span>
|
||||
<span class="o">*</span> <span class="n">Hidden</span> <span class="n">Window</span>
|
||||
<span class="o">*</span> <span class="p">.</span><span class="n">NET</span><span class="o">-</span><span class="n">BroadcastEventWindow</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">3</span><span class="n">e2c690</span><span class="p">.</span><span class="mi">0</span>
|
||||
<span class="o">*</span> <span class="n">SystemResourceNotifyWindow</span>
|
||||
<span class="o">*</span> <span class="n">MediaContextNotificationWindow</span>
|
||||
<span class="o">*</span> <span class="n">Resilio</span> <span class="n">Sync</span> <span class="mi">2</span><span class="p">.</span><span class="mi">6</span><span class="p">.</span><span class="mi">3</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">List of all opened windows : </span>
|
||||
<span class="err"> * Forcepad driver tray window</span>
|
||||
<span class="err"> * Jauge de batterie</span>
|
||||
<span class="err"> * Network Flyout</span>
|
||||
<span class="err"> * Dashlane</span>
|
||||
<span class="err"> * Wox</span>
|
||||
<span class="err"> * JupyterLab - Brave</span>
|
||||
<span class="err"> * python</span>
|
||||
<span class="err"> * Visual Studio Code - Insiders</span>
|
||||
<span class="err"> * Code - Insiders</span>
|
||||
<span class="err"> * Documents</span>
|
||||
<span class="err"> * Windows PowerShell</span>
|
||||
<span class="err"> * Progression</span>
|
||||
<span class="err"> * Microsoft Edge</span>
|
||||
<span class="err"> * Microsoft Store</span>
|
||||
<span class="err"> * QTrayIconMessageWindow</span>
|
||||
<span class="err"> * Hidden Window</span>
|
||||
<span class="err"> * .NET-BroadcastEventWindow.4.0.0.0.3e2c690.0</span>
|
||||
<span class="err"> * SystemResourceNotifyWindow</span>
|
||||
<span class="err"> * MediaContextNotificationWindow</span>
|
||||
<span class="err"> * Resilio Sync 2.6.3</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -217,7 +217,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -143,7 +143,7 @@
|
||||
|
||||
<p><img alt="png" src="../images/load_image_PIL/myimage.png"></p>
|
||||
<p>If you pass the image object to the constructor of a Numpy array, the values of the image will be stored in that array</p>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
||||
@ -212,7 +212,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -126,11 +126,11 @@
|
||||
</header>
|
||||
<div class='article_content'>
|
||||
<h1>Plotting in log axis with matplotlib</h1>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
|
||||
<div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="o">%</span><span class="n">matplotlib</span> <span class="n">inline</span>
|
||||
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="mi">20</span><span class="p">)</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="mi">20</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="n">x</span><span class="o">/</span><span class="mf">10.0</span><span class="p">)</span>
|
||||
@ -248,7 +248,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||
@ -141,7 +141,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">24</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">24</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -150,7 +150,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">24</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">24</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -159,7 +159,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">24</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">24</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
</pre></div>
|
||||
|
||||
|
||||
<div class="highlight"><pre><span></span><span class="mi">0</span>
|
||||
<div class="highlight"><pre><span></span><span class="err">0</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<aside>
|
||||
@ -188,7 +188,7 @@
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p class="text-muted">
|
||||
<center>This project contains 107 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<center>This project contains 111 pages and is available on <a href="https://github.com/redoules/redoules.github.io">GitHub</a>.
|
||||
<br/>
|
||||
Copyright © Guillaume Redoulès,
|
||||
<time datetime="2018">2018</time>.
|
||||
|
||||