|
14 | 14 | </script> |
15 | 15 |
|
16 | 16 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
17 | | - <title>dpnp.dpnp_array — Data Parallel Extension for NumPy 0.21.0dev0+37.g6ceefc5d674 documentation</title> |
| 17 | + <title>dpnp.dpnp_array — Data Parallel Extension for NumPy 0.21.0dev0+40.gc1ce4916bbb documentation</title> |
18 | 18 | <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=03e43079" /> |
19 | 19 | <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=9edc463e" /> |
20 | 20 |
|
21 | 21 |
|
22 | 22 | <script src="../../_static/jquery.js?v=5d32c60e"></script> |
23 | 23 | <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> |
24 | | - <script src="../../_static/documentation_options.js?v=78b657fe"></script> |
| 24 | + <script src="../../_static/documentation_options.js?v=fce5bcc9"></script> |
25 | 25 | <script src="../../_static/doctools.js?v=9bcbadda"></script> |
26 | 26 | <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> |
27 | 27 | <script src="../../_static/js/theme.js"></script> |
@@ -138,35 +138,41 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre> |
138 | 138 | <span class="w"> </span><span class="sd">"""</span> |
139 | 139 | <span class="sd"> Unwrap a single index element for the tensor indexing layer.</span> |
140 | 140 |
|
141 | | -<span class="sd"> Converts dpnp arrays to usm_ndarray and array-like objects (range, list)</span> |
142 | | -<span class="sd"> to numpy arrays with intp dtype for NumPy-compatible advanced indexing.</span> |
| 141 | +<span class="sd"> Converts dpnp arrays to usm_ndarray and array-like objects (range, list,</span> |
| 142 | +<span class="sd"> buffer protocol objects) to numpy arrays for NumPy-compatible advanced</span> |
| 143 | +<span class="sd"> indexing. Scalars and slices pass through to the tensor layer.</span> |
143 | 144 |
|
144 | 145 | <span class="sd"> """</span> |
145 | 146 |
|
146 | | - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">dpt</span><span class="o">.</span><span class="n">usm_ndarray</span><span class="p">):</span> |
| 147 | + <span class="k">if</span> <span class="p">(</span> |
| 148 | + <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span> |
| 149 | + <span class="ow">or</span> <span class="n">x</span> <span class="ow">is</span> <span class="bp">Ellipsis</span> |
| 150 | + <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="n">dpt</span><span class="o">.</span><span class="n">usm_ndarray</span><span class="p">,</span> <span class="nb">slice</span><span class="p">,</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ndarray</span><span class="p">))</span> |
| 151 | + <span class="p">):</span> |
147 | 152 | <span class="k">return</span> <span class="n">x</span> |
148 | 153 | <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">dpnp_array</span><span class="p">):</span> |
149 | 154 | <span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">get_array</span><span class="p">()</span> |
150 | | - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">range</span><span class="p">):</span> |
151 | | - <span class="k">return</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">numpy</span><span class="o">.</span><span class="n">intp</span><span class="p">)</span> |
152 | | - <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> |
153 | | - <span class="c1"># keep boolean lists as boolean</span> |
154 | | - <span class="n">arr</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> |
155 | | - <span class="c1"># cast empty lists (float64 in NumPy) to intp</span> |
156 | | - <span class="c1"># for correct tensor indexing</span> |
157 | | - <span class="k">if</span> <span class="n">arr</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> |
158 | | - <span class="n">arr</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">intp</span><span class="p">)</span> |
159 | | - <span class="k">return</span> <span class="n">arr</span> |
160 | | - <span class="k">return</span> <span class="n">x</span> |
| 155 | + <span class="c1"># scalars (int, bool, numpy scalars) pass through to the tensor layer</span> |
| 156 | + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">numpy</span><span class="o">.</span><span class="n">generic</span><span class="p">)):</span> |
| 157 | + <span class="k">return</span> <span class="n">x</span> |
| 158 | + |
| 159 | + <span class="c1"># convert array-like objects (range, list, buffer protocol) to numpy</span> |
| 160 | + <span class="n">arr</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> |
| 161 | + <span class="c1"># cast empty arrays (float64 in NumPy) to intp</span> |
| 162 | + <span class="c1"># for correct tensor indexing</span> |
| 163 | + <span class="k">if</span> <span class="n">arr</span><span class="o">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> |
| 164 | + <span class="n">arr</span> <span class="o">=</span> <span class="n">arr</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">intp</span><span class="p">)</span> |
| 165 | + <span class="k">return</span> <span class="n">arr</span> |
161 | 166 |
|
162 | 167 |
|
163 | 168 | <span class="k">def</span><span class="w"> </span><span class="nf">_get_unwrapped_index_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span> |
164 | 169 | <span class="w"> </span><span class="sd">"""</span> |
165 | 170 | <span class="sd"> Get an unwrapped index key.</span> |
166 | 171 |
|
167 | 172 | <span class="sd"> Return a key where each nested instance of DPNP array is unwrapped into</span> |
168 | | -<span class="sd"> USM ndarray, and array-like objects (range, list) are converted to numpy</span> |
169 | | -<span class="sd"> arrays for further processing in advanced indexing functions.</span> |
| 173 | +<span class="sd"> USM ndarray, and array-like objects (range, list, buffer protocol objects)</span> |
| 174 | +<span class="sd"> are converted to numpy arrays for further processing in advanced</span> |
| 175 | +<span class="sd"> indexing functions.</span> |
170 | 176 |
|
171 | 177 | <span class="sd"> """</span> |
172 | 178 |
|
|
0 commit comments