|
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.19.0dev1+2.gd15d395fe58 documentation</title> |
| 17 | + <title>dpnp.dpnp_array — Data Parallel Extension for NumPy 0.19.0dev1+3.g9b73305babb 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=e59714d7" />
|
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=516e0b3f"></script> |
| 24 | + <script src="../../_static/documentation_options.js?v=2d9cbcf6"></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>
|
@@ -110,6 +110,7 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
|
110 | 110 | <span class="c1"># *****************************************************************************</span>
|
111 | 111 |
|
112 | 112 | <span class="kn">import</span><span class="w"> </span><span class="nn">dpctl.tensor</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dpt</span>
|
| 113 | +<span class="kn">import</span><span class="w"> </span><span class="nn">dpctl.tensor._type_utils</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">dtu</span> |
113 | 114 | <span class="kn">from</span><span class="w"> </span><span class="nn">dpctl.tensor._numpy_helper</span><span class="w"> </span><span class="kn">import</span> <span class="n">AxisError</span>
|
114 | 115 |
|
115 | 116 | <span class="kn">import</span><span class="w"> </span><span class="nn">dpnp</span>
|
@@ -2193,11 +2194,135 @@ <h1>Source code for dpnp.dpnp_array</h1><div class="highlight"><pre>
|
2193 | 2194 | <span class="n">mean</span><span class="o">=</span><span class="n">mean</span><span class="p">,</span>
|
2194 | 2195 | <span class="n">correction</span><span class="o">=</span><span class="n">correction</span><span class="p">,</span>
|
2195 | 2196 | <span class="p">)</span></div>
|
2196 |
| -</div> |
2197 | 2197 |
|
2198 | 2198 |
|
| 2199 | +<div class="viewcode-block" id="dpnp_array.view"> |
| 2200 | +<a class="viewcode-back" href="../../reference/generated/dpnp.dpnp_array.dpnp_array.view.html#dpnp.dpnp_array.dpnp_array.view">[docs]</a> |
| 2201 | + <span class="k">def</span><span class="w"> </span><span class="nf">view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> |
| 2202 | +<span class="w"> </span><span class="sd">"""</span> |
| 2203 | +<span class="sd"> New view of array with the same data.</span> |
| 2204 | + |
| 2205 | +<span class="sd"> For full documentation refer to :obj:`numpy.ndarray.view`.</span> |
| 2206 | + |
| 2207 | +<span class="sd"> Parameters</span> |
| 2208 | +<span class="sd"> ----------</span> |
| 2209 | +<span class="sd"> dtype : {None, str, dtype object}, optional</span> |
| 2210 | +<span class="sd"> The desired data type of the returned view, e.g. :obj:`dpnp.float32`</span> |
| 2211 | +<span class="sd"> or :obj:`dpnp.int16`. By default, it results in the view having the</span> |
| 2212 | +<span class="sd"> same data type.</span> |
| 2213 | + |
| 2214 | +<span class="sd"> Default: ``None``.</span> |
| 2215 | + |
| 2216 | +<span class="sd"> Notes</span> |
| 2217 | +<span class="sd"> -----</span> |
| 2218 | +<span class="sd"> Passing ``None`` for `dtype` is the same as omitting the parameter,</span> |
| 2219 | +<span class="sd"> opposite to NumPy where they have different meaning.</span> |
| 2220 | + |
| 2221 | +<span class="sd"> ``view(some_dtype)`` or ``view(dtype=some_dtype)`` constructs a view of</span> |
| 2222 | +<span class="sd"> the array's memory with a different data type. This can cause a</span> |
| 2223 | +<span class="sd"> reinterpretation of the bytes of memory.</span> |
| 2224 | + |
| 2225 | +<span class="sd"> Only the last axis has to be contiguous.</span> |
| 2226 | + |
| 2227 | +<span class="sd"> Limitations</span> |
| 2228 | +<span class="sd"> -----------</span> |
| 2229 | +<span class="sd"> Parameter `type` is supported only with default value ``None``.</span> |
| 2230 | +<span class="sd"> Otherwise, the function raises ``NotImplementedError`` exception.</span> |
| 2231 | + |
| 2232 | +<span class="sd"> Examples</span> |
| 2233 | +<span class="sd"> --------</span> |
| 2234 | +<span class="sd"> >>> import dpnp as np</span> |
| 2235 | +<span class="sd"> >>> x = np.ones((4,), dtype=np.float32)</span> |
| 2236 | +<span class="sd"> >>> xv = x.view(dtype=np.int32)</span> |
| 2237 | +<span class="sd"> >>> xv[:] = 0</span> |
| 2238 | +<span class="sd"> >>> xv</span> |
| 2239 | +<span class="sd"> array([0, 0, 0, 0], dtype=int32)</span> |
| 2240 | + |
| 2241 | +<span class="sd"> However, views that change dtype are totally fine for arrays with a</span> |
| 2242 | +<span class="sd"> contiguous last axis, even if the rest of the axes are not C-contiguous:</span> |
| 2243 | + |
| 2244 | +<span class="sd"> >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)</span> |
| 2245 | +<span class="sd"> >>> x.transpose(1, 0, 2).view(np.int16)</span> |
| 2246 | +<span class="sd"> array([[[ 256, 770],</span> |
| 2247 | +<span class="sd"> [3340, 3854]],</span> |
| 2248 | +<span class="sd"> <BLANKLINE></span> |
| 2249 | +<span class="sd"> [[1284, 1798],</span> |
| 2250 | +<span class="sd"> [4368, 4882]],</span> |
| 2251 | +<span class="sd"> <BLANKLINE></span> |
| 2252 | +<span class="sd"> [[2312, 2826],</span> |
| 2253 | +<span class="sd"> [5396, 5910]]], dtype=int16)</span> |
| 2254 | + |
| 2255 | +<span class="sd"> """</span> |
| 2256 | + |
| 2257 | + <span class="k">if</span> <span class="nb">type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> |
| 2258 | + <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> |
| 2259 | + <span class="s2">"Keyword argument `type` is supported only with "</span> |
| 2260 | + <span class="sa">f</span><span class="s2">"default value ``None``, but got </span><span class="si">{</span><span class="nb">type</span><span class="si">}</span><span class="s2">."</span> |
| 2261 | + <span class="p">)</span> |
| 2262 | + |
| 2263 | + <span class="n">old_sh</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> |
| 2264 | + <span class="n">old_strides</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">strides</span> |
| 2265 | + |
| 2266 | + <span class="k">if</span> <span class="n">dtype</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> |
| 2267 | + <span class="k">return</span> <span class="n">dpnp_array</span><span class="p">(</span><span class="n">old_sh</span><span class="p">,</span> <span class="n">buffer</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">strides</span><span class="o">=</span><span class="n">old_strides</span><span class="p">)</span> |
| 2268 | + |
| 2269 | + <span class="n">new_dt</span> <span class="o">=</span> <span class="n">dpnp</span><span class="o">.</span><span class="n">dtype</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> |
| 2270 | + <span class="n">new_dt</span> <span class="o">=</span> <span class="n">dtu</span><span class="o">.</span><span class="n">_to_device_supported_dtype</span><span class="p">(</span><span class="n">new_dt</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sycl_device</span><span class="p">)</span> |
| 2271 | + |
| 2272 | + <span class="n">new_itemsz</span> <span class="o">=</span> <span class="n">new_dt</span><span class="o">.</span><span class="n">itemsize</span> |
| 2273 | + <span class="n">old_itemsz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="o">.</span><span class="n">itemsize</span> |
| 2274 | + <span class="k">if</span> <span class="n">new_itemsz</span> <span class="o">==</span> <span class="n">old_itemsz</span><span class="p">:</span> |
| 2275 | + <span class="k">return</span> <span class="n">dpnp_array</span><span class="p">(</span> |
| 2276 | + <span class="n">old_sh</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">new_dt</span><span class="p">,</span> <span class="n">buffer</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">strides</span><span class="o">=</span><span class="n">old_strides</span> |
| 2277 | + <span class="p">)</span> |
| 2278 | + |
| 2279 | + <span class="n">ndim</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndim</span> |
| 2280 | + <span class="k">if</span> <span class="n">ndim</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> |
| 2281 | + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> |
| 2282 | + <span class="s2">"Changing the dtype of a 0d array is only supported "</span> |
| 2283 | + <span class="s2">"if the itemsize is unchanged"</span> |
| 2284 | + <span class="p">)</span> |
| 2285 | + |
| 2286 | + <span class="c1"># resize on last axis only</span> |
| 2287 | + <span class="n">axis</span> <span class="o">=</span> <span class="n">ndim</span> <span class="o">-</span> <span class="mi">1</span> |
| 2288 | + <span class="k">if</span> <span class="n">old_sh</span><span class="p">[</span><span class="n">axis</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">old_strides</span><span class="p">[</span><span class="n">axis</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> |
| 2289 | + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> |
| 2290 | + <span class="s2">"To change to a dtype of a different size, "</span> |
| 2291 | + <span class="s2">"the last axis must be contiguous"</span> |
| 2292 | + <span class="p">)</span> |
| 2293 | + |
| 2294 | + <span class="c1"># normalize strides whenever itemsize changes</span> |
| 2295 | + <span class="k">if</span> <span class="n">old_itemsz</span> <span class="o">></span> <span class="n">new_itemsz</span><span class="p">:</span> |
| 2296 | + <span class="n">new_strides</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span> |
| 2297 | + <span class="n">el</span> <span class="o">*</span> <span class="p">(</span><span class="n">old_itemsz</span> <span class="o">//</span> <span class="n">new_itemsz</span><span class="p">)</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">old_strides</span> |
| 2298 | + <span class="p">)</span> |
| 2299 | + <span class="k">else</span><span class="p">:</span> |
| 2300 | + <span class="n">new_strides</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span> |
| 2301 | + <span class="n">el</span> <span class="o">//</span> <span class="p">(</span><span class="n">new_itemsz</span> <span class="o">//</span> <span class="n">old_itemsz</span><span class="p">)</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">old_strides</span> |
| 2302 | + <span class="p">)</span> |
| 2303 | + <span class="n">new_strides</span><span class="p">[</span><span class="n">axis</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span> |
| 2304 | + <span class="n">new_strides</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">new_strides</span><span class="p">)</span> |
| 2305 | + |
| 2306 | + <span class="n">new_dim</span> <span class="o">=</span> <span class="n">old_sh</span><span class="p">[</span><span class="n">axis</span><span class="p">]</span> <span class="o">*</span> <span class="n">old_itemsz</span> |
| 2307 | + <span class="k">if</span> <span class="n">new_dim</span> <span class="o">%</span> <span class="n">new_itemsz</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> |
| 2308 | + <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> |
| 2309 | + <span class="s2">"When changing to a larger dtype, its size must be a divisor "</span> |
| 2310 | + <span class="s2">"of the total size in bytes of the last axis of the array"</span> |
| 2311 | + <span class="p">)</span> |
| 2312 | + |
| 2313 | + <span class="c1"># normalize shape whenever itemsize changes</span> |
| 2314 | + <span class="n">new_sh</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">old_sh</span><span class="p">)</span> |
| 2315 | + <span class="n">new_sh</span><span class="p">[</span><span class="n">axis</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_dim</span> <span class="o">//</span> <span class="n">new_itemsz</span> |
| 2316 | + <span class="n">new_sh</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">new_sh</span><span class="p">)</span> |
| 2317 | + |
| 2318 | + <span class="k">return</span> <span class="n">dpnp_array</span><span class="p">(</span> |
| 2319 | + <span class="n">new_sh</span><span class="p">,</span> |
| 2320 | + <span class="n">dtype</span><span class="o">=</span><span class="n">new_dt</span><span class="p">,</span> |
| 2321 | + <span class="n">buffer</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> |
| 2322 | + <span class="n">strides</span><span class="o">=</span><span class="n">new_strides</span><span class="p">,</span> |
| 2323 | + <span class="p">)</span></div> |
| 2324 | +</div> |
2199 | 2325 |
|
2200 |
| -<span class="c1"># 'view'</span> |
2201 | 2326 | </pre></div>
|
2202 | 2327 |
|
2203 | 2328 | </div>
|
|
0 commit comments