Skip to content

Commit 767ddbf

Browse files
implement dpnp.apply_over_axes (#2174)
* implement dpnp.apply_over_axes * fix issue with a test 2987585
1 parent 33e595d commit 767ddbf

File tree

587 files changed

+1495
-1177
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

587 files changed

+1495
-1177
lines changed

.buildinfo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Sphinx build info version 1
22
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
3-
config: 3e072abc896018c8ff1e7c685192c21b
3+
config: 322d4435e6467c2faf6788b29b9bd90c
44
tags: 645f666f9bcd5a90fca523b33c5a78b7

_modules/dpnp/dpnp_array.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_array &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_array &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_flatiter.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_flatiter &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_flatiter &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_arraycreation.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_arraycreation &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_arraycreation &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_bitwise.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_bitwise &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_bitwise &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_counting.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_counting &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_counting &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_functional.html

Lines changed: 90 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_functional &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_functional &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>
@@ -123,11 +123,14 @@ <h1>Source code for dpnp.dpnp_iface_functional</h1><div class="highlight"><pre>
123123

124124

125125
<span class="kn">import</span> <span class="nn">numpy</span>
126-
<span class="kn">from</span> <span class="nn">dpctl.tensor._numpy_helper</span> <span class="kn">import</span> <span class="n">normalize_axis_index</span>
126+
<span class="kn">from</span> <span class="nn">dpctl.tensor._numpy_helper</span> <span class="kn">import</span> <span class="p">(</span>
127+
<span class="n">normalize_axis_index</span><span class="p">,</span>
128+
<span class="n">normalize_axis_tuple</span><span class="p">,</span>
129+
<span class="p">)</span>
127130

128131
<span class="kn">import</span> <span class="nn">dpnp</span>
129132

130-
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;apply_along_axis&quot;</span><span class="p">]</span>
133+
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;apply_along_axis&quot;</span><span class="p">,</span> <span class="s2">&quot;apply_over_axes&quot;</span><span class="p">]</span>
131134

132135

133136
<div class="viewcode-block" id="apply_along_axis">
@@ -273,6 +276,89 @@ <h1>Source code for dpnp.dpnp_iface_functional</h1><div class="highlight"><pre>
273276

274277
<span class="k">return</span> <span class="n">buff</span></div>
275278

279+
280+
281+
<div class="viewcode-block" id="apply_over_axes">
282+
<a class="viewcode-back" href="../../reference/generated/dpnp.apply_over_axes.html#dpnp.apply_over_axes">[docs]</a>
283+
<span class="k">def</span> <span class="nf">apply_over_axes</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">axes</span><span class="p">):</span>
284+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
285+
<span class="sd"> Apply a function repeatedly over multiple axes.</span>
286+
287+
<span class="sd"> `func` is called as ``res = func(a, axis)``, where `axis` is the first</span>
288+
<span class="sd"> element of `axes`. The result `res` of the function call must have</span>
289+
<span class="sd"> either the same dimensions as `a` or one less dimension. If `res`</span>
290+
<span class="sd"> has one less dimension than `a`, a dimension is inserted before</span>
291+
<span class="sd"> `axis`. The call to `func` is then repeated for each axis in `axes`,</span>
292+
<span class="sd"> with `res` as the first argument.</span>
293+
294+
<span class="sd"> For full documentation refer to :obj:`numpy.apply_over_axes`.</span>
295+
296+
<span class="sd"> Parameters</span>
297+
<span class="sd"> ----------</span>
298+
<span class="sd"> func : function</span>
299+
<span class="sd"> This function must take two arguments, ``func(a, axis)``.</span>
300+
<span class="sd"> a : {dpnp.ndarray, usm_ndarray}</span>
301+
<span class="sd"> Input array.</span>
302+
<span class="sd"> axes : {int, sequence of ints}</span>
303+
<span class="sd"> Axes over which `func` is applied.</span>
304+
305+
<span class="sd"> Returns</span>
306+
<span class="sd"> -------</span>
307+
<span class="sd"> out : dpnp.ndarray</span>
308+
<span class="sd"> The output array. The number of dimensions is the same as `a`,</span>
309+
<span class="sd"> but the shape can be different. This depends on whether `func`</span>
310+
<span class="sd"> changes the shape of its output with respect to its input.</span>
311+
312+
<span class="sd"> See Also</span>
313+
<span class="sd"> --------</span>
314+
<span class="sd"> :obj:`dpnp.apply_along_axis` : Apply a function to 1-D slices of an array</span>
315+
<span class="sd"> along the given axis.</span>
316+
317+
<span class="sd"> Examples</span>
318+
<span class="sd"> --------</span>
319+
<span class="sd"> &gt;&gt;&gt; import dpnp as np</span>
320+
<span class="sd"> &gt;&gt;&gt; a = np.arange(24).reshape(2, 3, 4)</span>
321+
<span class="sd"> &gt;&gt;&gt; a</span>
322+
<span class="sd"> array([[[ 0, 1, 2, 3],</span>
323+
<span class="sd"> [ 4, 5, 6, 7],</span>
324+
<span class="sd"> [ 8, 9, 10, 11]],</span>
325+
<span class="sd"> [[12, 13, 14, 15],</span>
326+
<span class="sd"> [16, 17, 18, 19],</span>
327+
<span class="sd"> [20, 21, 22, 23]]])</span>
328+
329+
<span class="sd"> Sum over axes 0 and 2. The result has same number of dimensions</span>
330+
<span class="sd"> as the original array:</span>
331+
332+
<span class="sd"> &gt;&gt;&gt; np.apply_over_axes(np.sum, a, [0, 2])</span>
333+
<span class="sd"> array([[[ 60],</span>
334+
<span class="sd"> [ 92],</span>
335+
<span class="sd"> [124]]])</span>
336+
337+
<span class="sd"> Tuple axis arguments to ufuncs are equivalent:</span>
338+
339+
<span class="sd"> &gt;&gt;&gt; np.sum(a, axis=(0, 2), keepdims=True)</span>
340+
<span class="sd"> array([[[ 60],</span>
341+
<span class="sd"> [ 92],</span>
342+
<span class="sd"> [124]]])</span>
343+
344+
<span class="sd"> &quot;&quot;&quot;</span>
345+
346+
<span class="n">dpnp</span><span class="o">.</span><span class="n">check_supported_arrays_type</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
347+
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">axes</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
348+
<span class="n">axes</span> <span class="o">=</span> <span class="p">(</span><span class="n">axes</span><span class="p">,)</span>
349+
<span class="n">axes</span> <span class="o">=</span> <span class="n">normalize_axis_tuple</span><span class="p">(</span><span class="n">axes</span><span class="p">,</span> <span class="n">a</span><span class="o">.</span><span class="n">ndim</span><span class="p">)</span>
350+
351+
<span class="k">for</span> <span class="n">axis</span> <span class="ow">in</span> <span class="n">axes</span><span class="p">:</span>
352+
<span class="n">res</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">axis</span><span class="p">)</span>
353+
<span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">ndim</span> <span class="o">!=</span> <span class="n">a</span><span class="o">.</span><span class="n">ndim</span><span class="p">:</span>
354+
<span class="n">res</span> <span class="o">=</span> <span class="n">dpnp</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">axis</span><span class="p">)</span>
355+
<span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">ndim</span> <span class="o">!=</span> <span class="n">a</span><span class="o">.</span><span class="n">ndim</span><span class="p">:</span>
356+
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
357+
<span class="s2">&quot;function is not returning an array of the correct shape&quot;</span>
358+
<span class="p">)</span>
359+
<span class="n">a</span> <span class="o">=</span> <span class="n">res</span>
360+
<span class="k">return</span> <span class="n">res</span></div>
361+
276362
</pre></div>
277363

278364
</div>

_modules/dpnp/dpnp_iface_histograms.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_histograms &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_histograms &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_indexing.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_indexing &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_indexing &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_libmath.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_libmath &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_libmath &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

_modules/dpnp/dpnp_iface_linearalgebra.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
</script>
1515

1616
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
17-
<title>dpnp.dpnp_iface_linearalgebra &mdash; Data Parallel Extension for NumPy 0.17.0dev2+1.g264c6d8a772 documentation</title>
17+
<title>dpnp.dpnp_iface_linearalgebra &mdash; Data Parallel Extension for NumPy 0.17.0dev2+2.g2987585c848 documentation</title>
1818
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
1919
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
2020

2121

2222
<script src="../../_static/jquery.js?v=5d32c60e"></script>
2323
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
24-
<script src="../../_static/documentation_options.js?v=15ab0fe7"></script>
24+
<script src="../../_static/documentation_options.js?v=adfc414f"></script>
2525
<script src="../../_static/doctools.js?v=9bcbadda"></script>
2626
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
2727
<script src="../../_static/js/theme.js"></script>

0 commit comments

Comments
 (0)