<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mscneuro.neuro.uni-bremen.de/index.php?action=history&amp;feed=atom&amp;title=Nested_iters</id>
	<title>Nested iters - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mscneuro.neuro.uni-bremen.de/index.php?action=history&amp;feed=atom&amp;title=Nested_iters"/>
	<link rel="alternate" type="text/html" href="https://mscneuro.neuro.uni-bremen.de/index.php?title=Nested_iters&amp;action=history"/>
	<updated>2026-09-25T00:54:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://mscneuro.neuro.uni-bremen.de/index.php?title=Nested_iters&amp;diff=387&amp;oldid=prev</id>
		<title>Davrot at 16:55, 17 October 2025</title>
		<link rel="alternate" type="text/html" href="https://mscneuro.neuro.uni-bremen.de/index.php?title=Nested_iters&amp;diff=387&amp;oldid=prev"/>
		<updated>2025-10-17T16:55:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:55, 17 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Top ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Questions to [mailto:davrot@uni-bremen.de David Rotermund]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Questions to [mailto:davrot@uni-bremen.de David Rotermund]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-237:rev-387:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Davrot</name></author>
	</entry>
	<entry>
		<id>https://mscneuro.neuro.uni-bremen.de/index.php?title=Nested_iters&amp;diff=237&amp;oldid=prev</id>
		<title>Davrot: Created page with &quot;== Top == Questions to [mailto:davrot@uni-bremen.de David Rotermund]  &#039;&#039;&#039;This is an optional topic!&#039;&#039;&#039;  == [https://numpy.org/doc/stable/reference/generated/numpy.nested_iters.html numpy.nested_iters] == &lt;syntaxhighlight lang=&quot;python&quot;&gt;numpy.nested_iters(op, axes, flags=None, op_flags=None, op_dtypes=None, order=&#039;K&#039;, casting=&#039;safe&#039;, buffersize=0)&lt;/syntaxhighlight&gt;&lt;blockquote&gt;Create nditers for use in nested loops  Create a tuple of nditer objects which iterate in nested l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mscneuro.neuro.uni-bremen.de/index.php?title=Nested_iters&amp;diff=237&amp;oldid=prev"/>
		<updated>2025-10-17T13:52:03Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Top == Questions to [mailto:davrot@uni-bremen.de David Rotermund]  &amp;#039;&amp;#039;&amp;#039;This is an optional topic!&amp;#039;&amp;#039;&amp;#039;  == [https://numpy.org/doc/stable/reference/generated/numpy.nested_iters.html numpy.nested_iters] == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;numpy.nested_iters(op, axes, flags=None, op_flags=None, op_dtypes=None, order=&amp;#039;K&amp;#039;, casting=&amp;#039;safe&amp;#039;, buffersize=0)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;blockquote&amp;gt;Create nditers for use in nested loops  Create a tuple of nditer objects which iterate in nested l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Top ==&lt;br /&gt;
Questions to [mailto:davrot@uni-bremen.de David Rotermund]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This is an optional topic!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== [https://numpy.org/doc/stable/reference/generated/numpy.nested_iters.html numpy.nested_iters] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;numpy.nested_iters(op, axes, flags=None, op_flags=None, op_dtypes=None, order=&amp;#039;K&amp;#039;, casting=&amp;#039;safe&amp;#039;, buffersize=0)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;blockquote&amp;gt;Create nditers for use in nested loops&lt;br /&gt;
&lt;br /&gt;
Create a tuple of nditer objects which iterate in nested loops over different axes of the op argument. The first iterator is used in the outermost loop, the last in the innermost loop. Advancing one will change the subsequent iterators to point at its new element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2d ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import numpy as np&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a = np.arange(1, 7).reshape((2, 3))&lt;br /&gt;
print(a)&lt;br /&gt;
print()&lt;br /&gt;
&lt;br /&gt;
iter_a, iter_b = np.nested_iters(a, [[0], [1]], flags=[&amp;quot;multi_index&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
for x in iter_a:&lt;br /&gt;
    for y in iter_b:&lt;br /&gt;
        print(&lt;br /&gt;
            f&amp;quot;iter_a.multi_index: {iter_a.multi_index}, iter_b.multi_index: {iter_b.multi_index}&amp;quot;&lt;br /&gt;
        )&amp;lt;/syntaxhighlight&amp;gt;Output:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;[[1 2 3]&lt;br /&gt;
 [4 5 6]]&lt;br /&gt;
&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (2,)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3d ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;import numpy as np&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a = np.zeros((2, 3, 4))&lt;br /&gt;
print(a.shape) # -&amp;gt; (2, 3, 4)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;------&amp;quot;)&lt;br /&gt;
iter_a, iter_b = np.nested_iters(a, [[0], [1, 2]], flags=[&amp;quot;multi_index&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
for x in iter_a:&lt;br /&gt;
    for y in iter_b:&lt;br /&gt;
        print(&lt;br /&gt;
            f&amp;quot;iter_a.multi_index: {iter_a.multi_index}, iter_b.multi_index: {iter_b.multi_index}&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
print(&amp;quot;------&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;++++++&amp;quot;)&lt;br /&gt;
iter_a, iter_b = np.nested_iters(a, [[0, 1], [2]], flags=[&amp;quot;multi_index&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
for x in iter_a:&lt;br /&gt;
    for y in iter_b:&lt;br /&gt;
        print(&lt;br /&gt;
            f&amp;quot;iter_a.multi_index: {iter_a.multi_index}, iter_b.multi_index: {iter_b.multi_index}&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
print(&amp;quot;++++++&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;Output:&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;------&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (0, 0)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (0, 1)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (0, 2)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (0, 3)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (1, 0)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (1, 1)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (1, 2)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (1, 3)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (2, 0)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (2, 1)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (2, 2)&lt;br /&gt;
iter_a.multi_index: (0,), iter_b.multi_index: (2, 3)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (0, 0)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (0, 1)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (0, 2)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (0, 3)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (1, 0)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (1, 1)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (1, 2)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (1, 3)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (2, 0)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (2, 1)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (2, 2)&lt;br /&gt;
iter_a.multi_index: (1,), iter_b.multi_index: (2, 3)&lt;br /&gt;
------&lt;br /&gt;
++++++&lt;br /&gt;
iter_a.multi_index: (0, 0), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (0, 0), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (0, 0), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (0, 0), iter_b.multi_index: (3,)&lt;br /&gt;
iter_a.multi_index: (0, 1), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (0, 1), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (0, 1), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (0, 1), iter_b.multi_index: (3,)&lt;br /&gt;
iter_a.multi_index: (0, 2), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (0, 2), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (0, 2), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (0, 2), iter_b.multi_index: (3,)&lt;br /&gt;
iter_a.multi_index: (1, 0), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (1, 0), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (1, 0), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (1, 0), iter_b.multi_index: (3,)&lt;br /&gt;
iter_a.multi_index: (1, 1), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (1, 1), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (1, 1), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (1, 1), iter_b.multi_index: (3,)&lt;br /&gt;
iter_a.multi_index: (1, 2), iter_b.multi_index: (0,)&lt;br /&gt;
iter_a.multi_index: (1, 2), iter_b.multi_index: (1,)&lt;br /&gt;
iter_a.multi_index: (1, 2), iter_b.multi_index: (2,)&lt;br /&gt;
iter_a.multi_index: (1, 2), iter_b.multi_index: (3,)&lt;br /&gt;
++++++&amp;lt;/syntaxhighlight&amp;gt;For higher dimensions, we can partition the indices into groups (if we want to). e.g. 4 dims:&lt;br /&gt;
&lt;br /&gt;
[[0,1], [2,3]] or [[0],[1],[2],[3]] or [[0,1,2],[3]],…&lt;/div&gt;</summary>
		<author><name>Davrot</name></author>
	</entry>
</feed>