Skip to content

Commit

Permalink
NumPy indexing
Browse files Browse the repository at this point in the history
  • Loading branch information
gto76 committed Apr 12, 2024
1 parent a55a315 commit 83311c7
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 29 deletions.
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2680,25 +2680,25 @@ import numpy as np

### Indexing
```perl
<el> = <2d_array>[row_index, column_index] # <3d_a>[table_i, row_i, column_i]
<1d_view> = <2d_array>[row_index] # <3d_a>[table_i, row_i]
<1d_view> = <2d_array>[:, column_index] # <3d_a>[table_i, :, column_i]
<2d_view> = <2d_array>[rows_slice, columns_slice] # <3d_a>[table_i, rows_s, columns_s]
<el> = <2d>[row_index, col_index] # Or: <3d>[<int>, <int>, <int>]
<1d_view> = <2d>[row_index] # Or: <3d>[<int>, <int>, <slice>]
<1d_view> = <2d>[:, col_index] # Or: <3d>[<int>, <slice>, <int>]
<2d_view> = <2d>[from:to_row_i, from:to_col_i] # Or: <3d>[<int>, <slice>, <slice>]
```

```perl
<2d_array> = <2d_array>[row_indexes] # <3d_a>[table_i/is, row_is]
<2d_array> = <2d_array>[:, column_indexes] # <3d_a>[table_i/is, :, column_is]
<1d_array> = <2d_array>[row_indexes, column_indexes] # <3d_a>[table_i/is, row_is, column_is]
<1d_array> = <2d_array>[row_indexes, column_index] # <3d_a>[table_i/is, row_is, column_i]
<1d_array> = <2d>[row_indices, col_indices] # Or: <3d>[<int/1d>, <1d>, <1d>]
<2d_array> = <2d>[row_indices] # Or: <3d>[<int/1d>, <1d>, <slice>]
<2d_array> = <2d>[:, col_indices] # Or: <3d>[<int/1d>, <slice>, <1d>]
<2d_array> = <2d>[np.ix_(row_indices, col_indices)] # Or: <3d>[<int/1d/2d>, <2d>, <2d>]
```

```perl
<2d_bools> = <2d_array> > <el/1d/2d_array> # 1d_array must have size of a row.
<1d/2d_a> = <2d_array>[<2d/1d_bools>] # 1d_bools must have size of a column.
<2d_bools> = <2d> > <el/1d/2d> # 1d object must have size of a row.
<1/2d_arr> = <2d>[<2d/1d_bools>] # 1d_bools must have size of a column.
```
* **Indexes should not be tuples because Python converts `'obj[i, j]'` to `'obj[(i, j)]'`!**
* **`':'` returns a slice of all dimension's indexes. Omitted dimensions default to `':'`.**
* **`':'` returns a slice of all dimension's indices. Omitted dimensions default to `':'`.**
* **Indices should not be tuples because Python converts `'obj[i, j]'` to `'obj[(i, j)]'`!**
* **Any value that is broadcastable to the indexed shape can be assigned to the selection.**

### Broadcasting
Expand Down
28 changes: 14 additions & 14 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@

<body>
<header>
<aside>March 17, 2024</aside>
<aside>April 12, 2024</aside>
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
</header>

Expand Down Expand Up @@ -2201,23 +2201,23 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
<li><strong>Shape is a tuple of dimension sizes. A 100x50 RGB image has shape (50, 100, 3).</strong></li>
<li><strong>Axis is an index of a dimension. Leftmost dimension has index 0. Summing the RGB image along axis 2 will return a greyscale image with shape (50, 100).</strong></li>
</ul>
<div><h3 id="indexing">Indexing</h3><pre><code class="bash hljs">&lt;el&gt; = &lt;2d_array&gt;[row_index, column_index] <span class="hljs-comment"># &lt;3d_a&gt;[table_i, row_i, column_i]</span>
&lt;1d_view&gt; = &lt;2d_array&gt;[row_index] <span class="hljs-comment"># &lt;3d_a&gt;[table_i, row_i]</span>
&lt;1d_view&gt; = &lt;2d_array&gt;[:, column_index] <span class="hljs-comment"># &lt;3d_a&gt;[table_i, :, column_i]</span>
&lt;2d_view&gt; = &lt;2d_array&gt;[rows_slice, columns_slice] <span class="hljs-comment"># &lt;3d_a&gt;[table_i, rows_s, columns_s]</span>
<div><h3 id="indexing">Indexing</h3><pre><code class="bash hljs">&lt;el&gt; = &lt;2d&gt;[row_index, col_index] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int&gt;, &lt;int&gt;, &lt;int&gt;]</span>
&lt;1d_view&gt; = &lt;2d&gt;[row_index] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int&gt;, &lt;int&gt;, &lt;slice&gt;]</span>
&lt;1d_view&gt; = &lt;2d&gt;[:, col_index] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int&gt;, &lt;slice&gt;, &lt;int&gt;]</span>
&lt;2d_view&gt; = &lt;2d&gt;[from:to_row_i, from:to_col_i] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int&gt;, &lt;slice&gt;, &lt;slice&gt;]</span>
</code></pre></div>

<pre><code class="bash hljs">&lt;2d_array&gt; = &lt;2d_array&gt;[row_indexes] <span class="hljs-comment"># &lt;3d_a&gt;[table_i/is, row_is]</span>
&lt;2d_array&gt; = &lt;2d_array&gt;[:, column_indexes] <span class="hljs-comment"># &lt;3d_a&gt;[table_i/is, :, column_is]</span>
&lt;1d_array&gt; = &lt;2d_array&gt;[row_indexes, column_indexes] <span class="hljs-comment"># &lt;3d_a&gt;[table_i/is, row_is, column_is]</span>
&lt;1d_array&gt; = &lt;2d_array&gt;[row_indexes, column_index] <span class="hljs-comment"># &lt;3d_a&gt;[table_i/is, row_is, column_i]</span>
<pre><code class="bash hljs">&lt;1d_array&gt; = &lt;2d&gt;[row_indices, col_indices] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int/1d&gt;, &lt;1d&gt;, &lt;1d&gt;]</span>
&lt;2d_array&gt; = &lt;2d&gt;[row_indices] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int/1d&gt;, &lt;1d&gt;, &lt;slice&gt;]</span>
&lt;2d_array&gt; = &lt;2d&gt;[:, col_indices] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int/1d&gt;, &lt;slice&gt;, &lt;1d&gt;]</span>
&lt;2d_array&gt; = &lt;2d&gt;[np.ix_(row_indices, col_indices)] <span class="hljs-comment"># Or: &lt;3d&gt;[&lt;int/1d/2d&gt;, &lt;2d&gt;, &lt;2d&gt;]</span>
</code></pre>
<pre><code class="bash hljs">&lt;2d_bools&gt; = &lt;2d_array&gt; &gt; &lt;el/1d/2d_array&gt; <span class="hljs-comment"># 1d_array must have size of a row.</span>
&lt;1d/2d_a&gt; = &lt;2d_array&gt;[&lt;2d/1d_bools&gt;] <span class="hljs-comment"># 1d_bools must have size of a column.</span>
<pre><code class="bash hljs">&lt;2d_bools&gt; = &lt;2d&gt; &gt; &lt;el/1d/2d&gt; <span class="hljs-comment"># 1d object must have size of a row.</span>
&lt;1/2d_arr&gt; = &lt;2d&gt;[&lt;2d/1d_bools&gt;] <span class="hljs-comment"># 1d_bools must have size of a column.</span>
</code></pre>
<ul>
<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>
<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>
<li><strong><code class="python hljs"><span class="hljs-string">':'</span></code> returns a slice of all dimension's indices. Omitted dimensions default to <code class="python hljs"><span class="hljs-string">':'</span></code>.</strong></li>
<li><strong>Indices 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>
<li><strong>Any value that is broadcastable to the indexed shape can be assigned to the selection.</strong></li>
</ul>
<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>
Expand Down Expand Up @@ -2935,7 +2935,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment


<footer>
<aside>March 17, 2024</aside>
<aside>April 12, 2024</aside>
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
</footer>

Expand Down
6 changes: 3 additions & 3 deletions parse.js
Original file line number Diff line number Diff line change
Expand Up @@ -800,9 +800,9 @@ function highlightCode() {
function changeCodeLanguages() {
setApaches(['<D>', '<T>', '<DT>', '<TD>', '<a>', '<n>']);
$('code').not('.python').not('.text').not('.bash').not('.apache').addClass('python');
$('code:contains(<el> = <2d_array>[row_index, column_index])').removeClass().addClass('bash');
$('code:contains(<2d_array> = <2d_array>[row_indexes])').removeClass().addClass('bash');
$('code:contains(<2d_bools> = <2d_array> > <el/1d/2d_array>)').removeClass().addClass('bash');
$('code:contains(<el> = <2d>[row_index, col_index])').removeClass().addClass('bash');
$('code:contains(<1d_array> = <2d>[row_indices, col_indices])').removeClass().addClass('bash');
$('code:contains(<2d_bools> = <2d> > <el/1d/2d>)').removeClass().addClass('bash');
$('code.perl').removeClass().addClass('python');
}

Expand Down

0 comments on commit 83311c7

Please sign in to comment.