Skip to content

Commit d8fd02f

Browse files
committed
NumPy, Image, Pandas
1 parent 34a9943 commit d8fd02f

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2693,6 +2693,7 @@ import numpy as np
26932693
<1d/2d_a> = <2d_array>[<2d/1d_bools>] # 1d_bools must have size of a column.
26942694
```
26952695
* **Indexes should not be tuples because Python converts `'obj[i, j]'` to `'obj[(i, j)]'`!**
2696+
* **`':'` returns a slice of all dimension's indexes. Omitted dimensions default to `':'`.**
26962697
* **Any value that is broadcastable to the indexed shape can be assigned to the selection.**
26972698

26982699
### Broadcasting
@@ -2738,9 +2739,7 @@ right = [[0.1, 0.6, 0.8], # Shape: (3, 3) <- !
27382739
[[ 0. , 0.5, 0.7],
27392740
[ 0.5, 0. , 0.2],
27402741
[ 0.7, 0.2, 0. ]]
2741-
>>> i = np.arange(3)
2742-
[0, 1, 2]
2743-
>>> distances[i, i] = np.inf
2742+
>>> distances[range(3), range(3)] = np.inf
27442743
[[ inf, 0.5, 0.7],
27452744
[ 0.5, inf, 0.2],
27462745
[ 0.7, 0.2, inf]]
@@ -2765,11 +2764,11 @@ from PIL import Image, ImageFilter, ImageEnhance
27652764
```
27662765

27672766
```python
2768-
<int/tuple> = <Image>.getpixel((x, y)) # Returns a pixel.
2769-
<Image>.putpixel((x, y), <int/tuple>) # Writes a pixel to the image.
2770-
<ImagingCore> = <Image>.getdata() # Returns a flattened view of the pixels.
2771-
<Image>.putdata(<list/ImagingCore>) # Writes a flattened sequence of pixels.
2772-
<Image>.paste(<Image>, (x, y)) # Writes passed image to the image.
2767+
<int/tuple> = <Image>.getpixel((x, y)) # Returns pixel's color.
2768+
<Image>.putpixel((x, y), <int/tuple>) # Changes pixel's color.
2769+
<ImagingCore> = <Image>.getdata() # Returns a flattened view of all pixels.
2770+
<Image>.putdata(<list/ImagingCore>) # Updates pixels with a copy of the sequence.
2771+
<Image>.paste(<Image>, (x, y)) # Draws passed image at specified location.
27732772
```
27742773

27752774
```python
@@ -3344,9 +3343,9 @@ plt.show() # Displays the plot. Also plt.sav
33443343

33453344
```python
33463345
<DF> = pd.read_json/html('<str/path/url>') # Run `$ pip3 install beautifulsoup4 lxml`.
3347-
<DF> = pd.read_csv/pickle/excel('<path/url>') # Use `sheet_name=None` to get all Excel sheets.
3346+
<DF> = pd.read_csv('<path/url>') # Also `names=<list>, parse_dates=False`.
3347+
<DF> = pd.read_pickle/excel('<path/url>') # Use `sheet_name=None` to get all Excel sheets.
33483348
<DF> = pd.read_sql('<table/query>', <conn.>) # SQLite3/SQLAlchemy connection (see #SQLite).
3349-
<DF> = pd.read_clipboard() # Reads a copied table from the clipboard.
33503349
```
33513350

33523351
```python
@@ -3371,6 +3370,7 @@ c 7 8 6
33713370
<GB> = <DF>.groupby(column_key/s) # Splits DF into groups based on passed column.
33723371
<DF> = <GB>.apply(<func>) # Maps each group. Func can return DF, Sr or el.
33733372
<GB> = <GB>[column_key] # Single column GB. All operations return a Sr.
3373+
<Sr> = <GB>.size() # A Sr of group sizes. Keys are group "names".
33743374
```
33753375

33763376
#### GroupBy — Aggregate, Transform, Map:

index.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454

5555
<body>
5656
<header>
57-
<aside>October 16, 2023</aside>
57+
<aside>November 3, 2023</aside>
5858
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
5959
</header>
6060

@@ -2198,6 +2198,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
21982198
</code></pre>
21992199
<ul>
22002200
<li><strong>Indexes should not be tuples because Python converts <code class="python hljs"><span class="hljs-string">'obj[i, j]'</span></code> to <code class="python hljs"><span class="hljs-string">'obj[(i, j)]'</span></code>!</strong></li>
2201+
<li><strong><code class="python hljs"><span class="hljs-string">':'</span></code> returns a slice of all dimension's indexes. Omitted dimensions default to <code class="python hljs"><span class="hljs-string">':'</span></code>.</strong></li>
22012202
<li><strong>Any value that is broadcastable to the indexed shape can be assigned to the selection.</strong></li>
22022203
</ul>
22032204
<div><h3 id="broadcasting">Broadcasting</h3><p><strong>Set of rules by which NumPy functions operate on arrays of different sizes and/or dimensions.</strong></p><pre><code class="python language-python hljs">left = [[<span class="hljs-number">0.1</span>], [<span class="hljs-number">0.6</span>], [<span class="hljs-number">0.8</span>]] <span class="hljs-comment"># Shape: (3, 1)</span>
@@ -2232,9 +2233,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
22322233
[[ <span class="hljs-number">0.</span> , <span class="hljs-number">0.5</span>, <span class="hljs-number">0.7</span>],
22332234
[ <span class="hljs-number">0.5</span>, <span class="hljs-number">0.</span> , <span class="hljs-number">0.2</span>],
22342235
[ <span class="hljs-number">0.7</span>, <span class="hljs-number">0.2</span>, <span class="hljs-number">0.</span> ]]
2235-
<span class="hljs-meta">&gt;&gt;&gt; </span>i = np.arange(<span class="hljs-number">3</span>)
2236-
[<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>]
2237-
<span class="hljs-meta">&gt;&gt;&gt; </span>distances[i, i] = np.inf
2236+
<span class="hljs-meta">&gt;&gt;&gt; </span>distances[range(<span class="hljs-number">3</span>), range(<span class="hljs-number">3</span>)] = np.inf
22382237
[[ inf, <span class="hljs-number">0.5</span>, <span class="hljs-number">0.7</span>],
22392238
[ <span class="hljs-number">0.5</span>, inf, <span class="hljs-number">0.2</span>],
22402239
[ <span class="hljs-number">0.7</span>, <span class="hljs-number">0.2</span>, inf]]
@@ -2253,11 +2252,11 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
22532252
&lt;Image&gt;.save(&lt;path&gt;) <span class="hljs-comment"># Selects format based on the path extension.</span>
22542253
&lt;Image&gt;.show() <span class="hljs-comment"># Opens image in the default preview app.</span>
22552254
</code></pre>
2256-
<pre><code class="python language-python hljs">&lt;int/tuple&gt; = &lt;Image&gt;.getpixel((x, y)) <span class="hljs-comment"># Returns a pixel.</span>
2257-
&lt;Image&gt;.putpixel((x, y), &lt;int/tuple&gt;) <span class="hljs-comment"># Writes a pixel to the image.</span>
2258-
&lt;ImagingCore&gt; = &lt;Image&gt;.getdata() <span class="hljs-comment"># Returns a flattened view of the pixels.</span>
2259-
&lt;Image&gt;.putdata(&lt;list/ImagingCore&gt;) <span class="hljs-comment"># Writes a flattened sequence of pixels.</span>
2260-
&lt;Image&gt;.paste(&lt;Image&gt;, (x, y)) <span class="hljs-comment"># Writes passed image to the image.</span>
2255+
<pre><code class="python language-python hljs">&lt;int/tuple&gt; = &lt;Image&gt;.getpixel((x, y)) <span class="hljs-comment"># Returns pixel's color.</span>
2256+
&lt;Image&gt;.putpixel((x, y), &lt;int/tuple&gt;) <span class="hljs-comment"># Changes pixel's color.</span>
2257+
&lt;ImagingCore&gt; = &lt;Image&gt;.getdata() <span class="hljs-comment"># Returns a flattened view of all pixels.</span>
2258+
&lt;Image&gt;.putdata(&lt;list/ImagingCore&gt;) <span class="hljs-comment"># Updates pixels with a copy of the sequence.</span>
2259+
&lt;Image&gt;.paste(&lt;Image&gt;, (x, y)) <span class="hljs-comment"># Draws passed image at specified location.</span>
22612260
</code></pre>
22622261
<pre><code class="python language-python hljs">&lt;Image&gt; = &lt;Image&gt;.filter(&lt;Filter&gt;) <span class="hljs-comment"># `&lt;Filter&gt; = ImageFilter.&lt;name&gt;([&lt;args&gt;])`</span>
22632262
&lt;Image&gt; = &lt;Enhance&gt;.enhance(&lt;float&gt;) <span class="hljs-comment"># `&lt;Enhance&gt; = ImageEnhance.&lt;name&gt;(&lt;Image&gt;)`</span>
@@ -2727,9 +2726,9 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
27272726
</code></pre></div>
27282727

27292728
<pre><code class="python language-python hljs">&lt;DF&gt; = pd.read_json/html(<span class="hljs-string">'&lt;str/path/url&gt;'</span>) <span class="hljs-comment"># Run `$ pip3 install beautifulsoup4 lxml`.</span>
2730-
&lt;DF&gt; = pd.read_csv/pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>) <span class="hljs-comment"># Use `sheet_name=None` to get all Excel sheets.</span>
2729+
&lt;DF&gt; = pd.read_csv(<span class="hljs-string">'&lt;path/url&gt;'</span>) <span class="hljs-comment"># Also `names=&lt;list&gt;, parse_dates=False`.</span>
2730+
&lt;DF&gt; = pd.read_pickle/excel(<span class="hljs-string">'&lt;path/url&gt;'</span>) <span class="hljs-comment"># Use `sheet_name=None` to get all Excel sheets.</span>
27312731
&lt;DF&gt; = pd.read_sql(<span class="hljs-string">'&lt;table/query&gt;'</span>, &lt;conn.&gt;) <span class="hljs-comment"># SQLite3/SQLAlchemy connection (see #SQLite).</span>
2732-
&lt;DF&gt; = pd.read_clipboard() <span class="hljs-comment"># Reads a copied table from the clipboard.</span>
27332732
</code></pre>
27342733
<pre><code class="python language-python hljs">&lt;dict&gt; = &lt;DF&gt;.to_dict([<span class="hljs-string">'d/l/s/…'</span>]) <span class="hljs-comment"># Returns columns as dicts, lists or series.</span>
27352734
&lt;str&gt; = &lt;DF&gt;.to_json/html/csv([&lt;path&gt;]) <span class="hljs-comment"># Also to_markdown/latex([&lt;path&gt;]).</span>
@@ -2747,6 +2746,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
27472746
<pre><code class="python language-python hljs">&lt;GB&gt; = &lt;DF&gt;.groupby(column_key/s) <span class="hljs-comment"># Splits DF into groups based on passed column.</span>
27482747
&lt;DF&gt; = &lt;GB&gt;.apply(&lt;func&gt;) <span class="hljs-comment"># Maps each group. Func can return DF, Sr or el.</span>
27492748
&lt;GB&gt; = &lt;GB&gt;[column_key] <span class="hljs-comment"># Single column GB. All operations return a Sr.</span>
2749+
&lt;Sr&gt; = &lt;GB&gt;.size() <span class="hljs-comment"># A Sr of group sizes. Keys are group "names".</span>
27502750
</code></pre>
27512751
<div><h4 id="groupbyaggregatetransformmap">GroupBy — Aggregate, Transform, Map:</h4><pre><code class="python language-python hljs">&lt;DF&gt; = &lt;GB&gt;.sum/max/mean/idxmax/all() <span class="hljs-comment"># Or: &lt;GB&gt;.agg(lambda &lt;Sr&gt;: &lt;el&gt;)</span>
27522752
&lt;DF&gt; = &lt;GB&gt;.rank/diff/cumsum/ffill() <span class="hljs-comment"># Or: &lt;GB&gt;.transform(lambda &lt;Sr&gt;: &lt;Sr&gt;)</span>
@@ -2925,7 +2925,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
29252925

29262926

29272927
<footer>
2928-
<aside>October 16, 2023</aside>
2928+
<aside>November 3, 2023</aside>
29292929
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
29302930
</footer>
29312931

0 commit comments

Comments
 (0)