1
+
2
+
3
+ <!DOCTYPE html>
4
+ < html class ="writer-html5 " lang ="en " data-content_root ="../../ ">
5
+ < head >
6
+ < meta charset ="utf-8 " />
7
+ <!-- Google tag (gtag.js) -->
8
+ < script async src ="https://www.googletagmanager.com/gtag/js?id=G-554F8VNE28 "> </ script >
9
+ < script >
10
+ window . dataLayer = window . dataLayer || [ ] ;
11
+ function gtag ( ) { dataLayer . push ( arguments ) ; }
12
+ gtag ( 'js' , new Date ( ) ) ;
13
+ gtag ( 'config' , 'G-554F8VNE28' ) ;
14
+ </ script >
15
+
16
+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
17
+ < title > dpnp.dpnp_flatiter — Data Parallel Extension for NumPy 0.17.0dev3+49.g40c98e4583a documentation</ title >
18
+ < link rel ="stylesheet " type ="text/css " href ="../../_static/pygments.css?v=03e43079 " />
19
+ < link rel ="stylesheet " type ="text/css " href ="../../_static/css/theme.css?v=e59714d7 " />
20
+
21
+
22
+ < script src ="../../_static/jquery.js?v=5d32c60e "> </ script >
23
+ < script src ="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c "> </ script >
24
+ < script src ="../../_static/documentation_options.js?v=4d8d2c92 "> </ script >
25
+ < script src ="../../_static/doctools.js?v=9bcbadda "> </ script >
26
+ < script src ="../../_static/sphinx_highlight.js?v=dc90522c "> </ script >
27
+ < script src ="../../_static/js/theme.js "> </ script >
28
+ < link rel ="index " title ="Index " href ="../../genindex.html " />
29
+ < link rel ="search " title ="Search " href ="../../search.html " />
30
+ </ head >
31
+
32
+ < body class ="wy-body-for-nav ">
33
+ < div class ="wy-grid-for-nav ">
34
+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
35
+ < div class ="wy-side-scroll ">
36
+ < div class ="wy-side-nav-search " >
37
+
38
+
39
+
40
+ < a href ="../../index.html " class ="icon icon-home ">
41
+ Data Parallel Extension for NumPy
42
+ </ a >
43
+ < div role ="search ">
44
+ < form id ="rtd-search-form " class ="wy-form " action ="../../search.html " method ="get ">
45
+ < input type ="text " name ="q " placeholder ="Search docs " aria-label ="Search docs " />
46
+ < input type ="hidden " name ="check_keywords " value ="yes " />
47
+ < input type ="hidden " name ="area " value ="default " />
48
+ </ form >
49
+ </ div >
50
+ </ div > < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="Navigation menu ">
51
+ < ul >
52
+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../overview.html "> Overview</ a > </ li >
53
+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../quick_start_guide.html "> Quick Start Guide</ a > </ li >
54
+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../reference/index.html "> API Reference</ a > </ li >
55
+ </ ul >
56
+ < p class ="caption " role ="heading "> < span class ="caption-text "> Development information</ span > </ p >
57
+ < ul >
58
+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../dpnp_backend_api.html "> C++ backend API Reference</ a > </ li >
59
+ </ ul >
60
+
61
+ </ div >
62
+ </ div >
63
+ </ nav >
64
+
65
+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap "> < nav class ="wy-nav-top " aria-label ="Mobile navigation menu " >
66
+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
67
+ < a href ="../../index.html "> Data Parallel Extension for NumPy</ a >
68
+ </ nav >
69
+
70
+ < div class ="wy-nav-content ">
71
+ < div class ="rst-content ">
72
+ < div role ="navigation " aria-label ="Page navigation ">
73
+ < ul class ="wy-breadcrumbs ">
74
+ < li > < a href ="../../index.html " class ="icon icon-home " aria-label ="Home "> </ a > </ li >
75
+ < li class ="breadcrumb-item "> < a href ="../index.html "> Module code</ a > </ li >
76
+ < li class ="breadcrumb-item active "> dpnp.dpnp_flatiter</ li >
77
+ < li class ="wy-breadcrumbs-aside ">
78
+ </ li >
79
+ </ ul >
80
+ < hr />
81
+ </ div >
82
+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
83
+ < div itemprop ="articleBody ">
84
+
85
+ < h1 > Source code for dpnp.dpnp_flatiter</ h1 > < div class ="highlight "> < pre >
86
+ < span > </ span > < span class ="c1 "> # -*- coding: utf-8 -*-</ span >
87
+ < span class ="c1 "> # *****************************************************************************</ span >
88
+ < span class ="c1 "> # Copyright (c) 2016-2025, Intel Corporation</ span >
89
+ < span class ="c1 "> # All rights reserved.</ span >
90
+ < span class ="c1 "> #</ span >
91
+ < span class ="c1 "> # Redistribution and use in source and binary forms, with or without</ span >
92
+ < span class ="c1 "> # modification, are permitted provided that the following conditions are met:</ span >
93
+ < span class ="c1 "> # - Redistributions of source code must retain the above copyright notice,</ span >
94
+ < span class ="c1 "> # this list of conditions and the following disclaimer.</ span >
95
+ < span class ="c1 "> # - Redistributions in binary form must reproduce the above copyright notice,</ span >
96
+ < span class ="c1 "> # this list of conditions and the following disclaimer in the documentation</ span >
97
+ < span class ="c1 "> # and/or other materials provided with the distribution.</ span >
98
+ < span class ="c1 "> #</ span >
99
+ < span class ="c1 "> # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</ span >
100
+ < span class ="c1 "> # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</ span >
101
+ < span class ="c1 "> # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</ span >
102
+ < span class ="c1 "> # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE</ span >
103
+ < span class ="c1 "> # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</ span >
104
+ < span class ="c1 "> # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</ span >
105
+ < span class ="c1 "> # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</ span >
106
+ < span class ="c1 "> # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</ span >
107
+ < span class ="c1 "> # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</ span >
108
+ < span class ="c1 "> # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF</ span >
109
+ < span class ="c1 "> # THE POSSIBILITY OF SUCH DAMAGE.</ span >
110
+ < span class ="c1 "> # *****************************************************************************</ span >
111
+
112
+ < span class ="sd "> """Implementation of flatiter."""</ span >
113
+
114
+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> dpnp</ span >
115
+
116
+
117
+ < div class ="viewcode-block " id ="flatiter ">
118
+ < a class ="viewcode-back " href ="../../reference/generated/dpnp.flatiter.html#dpnp.flatiter "> [docs]</ a >
119
+ < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> flatiter</ span > < span class ="p "> :</ span >
120
+ < span class ="w "> </ span > < span class ="sd "> """Flat iterator object to iterate over arrays."""</ span >
121
+
122
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> X</ span > < span class ="p "> ):</ span >
123
+ < span class ="k "> if</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> X</ span > < span class ="p "> )</ span > < span class ="ow "> is</ span > < span class ="ow "> not</ span > < span class ="n "> dpnp</ span > < span class ="o "> .</ span > < span class ="n "> ndarray</ span > < span class ="p "> :</ span >
124
+ < span class ="k "> raise</ span > < span class ="ne "> TypeError</ span > < span class ="p "> (</ span >
125
+ < span class ="s2 "> "Argument must be of type dpnp.ndarray, got </ span > < span class ="si "> {}</ span > < span class ="s2 "> "</ span > < span class ="o "> .</ span > < span class ="n "> format</ span > < span class ="p "> (</ span > < span class ="nb "> type</ span > < span class ="p "> (</ span > < span class ="n "> X</ span > < span class ="p "> ))</ span >
126
+ < span class ="p "> )</ span >
127
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> arr_</ span > < span class ="o "> =</ span > < span class ="n "> X</ span >
128
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> size_</ span > < span class ="o "> =</ span > < span class ="n "> X</ span > < span class ="o "> .</ span > < span class ="n "> size</ span >
129
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> i_</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span >
130
+
131
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> _multiindex</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> i</ span > < span class ="p "> ):</ span >
132
+ < span class ="n "> nd</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> arr_</ span > < span class ="o "> .</ span > < span class ="n "> ndim</ span >
133
+ < span class ="k "> if</ span > < span class ="n "> nd</ span > < span class ="o "> ==</ span > < span class ="mi "> 0</ span > < span class ="p "> :</ span >
134
+ < span class ="k "> if</ span > < span class ="n "> i</ span > < span class ="o "> ==</ span > < span class ="mi "> 0</ span > < span class ="p "> :</ span >
135
+ < span class ="k "> return</ span > < span class ="p "> ()</ span >
136
+ < span class ="k "> raise</ span > < span class ="ne "> KeyError</ span >
137
+ < span class ="k "> elif</ span > < span class ="n "> nd</ span > < span class ="o "> ==</ span > < span class ="mi "> 1</ span > < span class ="p "> :</ span >
138
+ < span class ="k "> return</ span > < span class ="p "> (</ span > < span class ="n "> i</ span > < span class ="p "> ,)</ span >
139
+ < span class ="n "> sh</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> arr_</ span > < span class ="o "> .</ span > < span class ="n "> shape</ span >
140
+ < span class ="n "> i_</ span > < span class ="o "> =</ span > < span class ="n "> i</ span >
141
+ < span class ="n "> multi_index</ span > < span class ="o "> =</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="o "> *</ span > < span class ="n "> nd</ span >
142
+ < span class ="k "> for</ span > < span class ="n "> k</ span > < span class ="ow "> in</ span > < span class ="nb "> reversed</ span > < span class ="p "> (</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="n "> nd</ span > < span class ="p "> )):</ span >
143
+ < span class ="n "> si</ span > < span class ="o "> =</ span > < span class ="n "> sh</ span > < span class ="p "> [</ span > < span class ="n "> k</ span > < span class ="p "> ]</ span >
144
+ < span class ="n "> q</ span > < span class ="o "> =</ span > < span class ="n "> i_</ span > < span class ="o "> //</ span > < span class ="n "> si</ span >
145
+ < span class ="n "> multi_index</ span > < span class ="p "> [</ span > < span class ="n "> k</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> i_</ span > < span class ="o "> -</ span > < span class ="n "> q</ span > < span class ="o "> *</ span > < span class ="n "> si</ span >
146
+ < span class ="n "> i_</ span > < span class ="o "> =</ span > < span class ="n "> q</ span >
147
+ < span class ="n "> multi_index</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> i_</ span >
148
+ < span class ="k "> return</ span > < span class ="nb "> tuple</ span > < span class ="p "> (</ span > < span class ="n "> multi_index</ span > < span class ="p "> )</ span >
149
+
150
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __getitem__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ):</ span >
151
+ < span class ="n "> idx</ span > < span class ="o "> =</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="s2 "> "__index__"</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
152
+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> callable</ span > < span class ="p "> (</ span > < span class ="n "> idx</ span > < span class ="p "> ):</ span >
153
+ < span class ="k "> raise</ span > < span class ="ne "> TypeError</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> )</ span >
154
+ < span class ="n "> i</ span > < span class ="o "> =</ span > < span class ="n "> idx</ span > < span class ="p "> ()</ span >
155
+ < span class ="n "> mi</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _multiindex</ span > < span class ="p "> (</ span > < span class ="n "> i</ span > < span class ="p "> )</ span >
156
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> arr_</ span > < span class ="o "> .</ span > < span class ="fm "> __getitem__</ span > < span class ="p "> (</ span > < span class ="n "> mi</ span > < span class ="p "> )</ span >
157
+
158
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __setitem__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> val</ span > < span class ="p "> ):</ span >
159
+ < span class ="n "> idx</ span > < span class ="o "> =</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="s2 "> "__index__"</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
160
+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="nb "> callable</ span > < span class ="p "> (</ span > < span class ="n "> idx</ span > < span class ="p "> ):</ span >
161
+ < span class ="k "> raise</ span > < span class ="ne "> TypeError</ span > < span class ="p "> (</ span > < span class ="n "> key</ span > < span class ="p "> )</ span >
162
+ < span class ="n "> i</ span > < span class ="o "> =</ span > < span class ="n "> idx</ span > < span class ="p "> ()</ span >
163
+ < span class ="n "> mi</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _multiindex</ span > < span class ="p "> (</ span > < span class ="n "> i</ span > < span class ="p "> )</ span >
164
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> arr_</ span > < span class ="o "> .</ span > < span class ="fm "> __setitem__</ span > < span class ="p "> (</ span > < span class ="n "> mi</ span > < span class ="p "> ,</ span > < span class ="n "> val</ span > < span class ="p "> )</ span >
165
+
166
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __iter__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
167
+ < span class ="k "> return</ span > < span class ="bp "> self</ span >
168
+
169
+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __next__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
170
+ < span class ="k "> if</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> i_</ span > < span class ="o "> <</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> size_</ span > < span class ="p "> :</ span >
171
+ < span class ="n "> val</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="fm "> __getitem__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> i_</ span > < span class ="p "> )</ span >
172
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> i_</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> i_</ span > < span class ="o "> +</ span > < span class ="mi "> 1</ span >
173
+ < span class ="k "> return</ span > < span class ="n "> val</ span >
174
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
175
+ < span class ="k "> raise</ span > < span class ="ne "> StopIteration</ span > </ div >
176
+
177
+ </ pre > </ div >
178
+
179
+ </ div >
180
+ </ div >
181
+ < footer >
182
+
183
+ < hr />
184
+
185
+ < div role ="contentinfo ">
186
+ < p > © Copyright 2020-2025, Intel Corporation.</ p >
187
+ </ div >
188
+
189
+ Built with < a href ="https://www.sphinx-doc.org/ "> Sphinx</ a > using a
190
+ < a href ="https://github.com/readthedocs/sphinx_rtd_theme "> theme</ a >
191
+ provided by < a href ="https://readthedocs.org "> Read the Docs</ a > .
192
+
193
+
194
+ </ footer >
195
+ </ div >
196
+ </ div >
197
+ </ section >
198
+ </ div >
199
+ < script >
200
+ jQuery ( function ( ) {
201
+ SphinxRtdTheme . Navigation . enable ( true ) ;
202
+ } ) ;
203
+ </ script >
204
+
205
+ </ body >
206
+ </ html >
0 commit comments