B >> a = np.arange(3 * 4 * 5 * 6).reshape(3, 4, 5, 6) >>> a_itor = np.lib.Arrayterator(a, 2) >>> a_itor.shape (3, 4, 5, 6) Now we can iterate over ``a_itor``, and it will return arrays of size two. Since `buf_size` was smaller than any dimension, the first dimension will be iterated over first: >>> for subarr in a_itor: ... if not subarr.all(): ... print(subarr, subarr.shape) ... [[[[0 1]]]] (1, 1, 1, 2) NcCsF||_||_dd|jD|_dd|jD|_dd|jD|_dS)NcSsg|]}dqS)r).0dimr r I/opt/alt/python37/lib64/python3.7/site-packages/numpy/lib/arrayterator.py ]sz)Arrayterator.__init__..cSsg|]}|qSr r )r r r r r r ^scSsg|]}dqS)r )r r r r r r _s)varbuf_sizeshapestartstopstep)selfrrr r r __init__Ys zArrayterator.__init__cCs t|j|S)N)getattrr)rattrr r r __getattr__aszArrayterator.__getattr__c Cs\t|ts|f}g}t||j}}xj|D]b}|tkr\|tdg||dt|}q*t|ttfr| t||ddq*| |q*Wt|}t||kr|tdf|t|7}| |j |j }xt t|j|j|j|D]l\}\}} } }||jpd|j|<| |jpd|j|<||jp4| ||j|<t| |j||j|<qW|S)z- Return a new arrayterator. Nrr) isinstancetuplelenndimEllipsisextendsliceintrappend __class__rr enumerateziprrrmin) rindexZfixedlengthZdimsslice_outirrrr r r __getitem__ds,    &zArrayterator.__getitem__cCs*tddt|j|j|jD}|j|S)z- Return corresponding data. css|]}t|VqdS)N)r )r tr r r sz)Arrayterator.__array__..)rr%rrrr)rr)r r r __array__s zArrayterator.__array__ccs(x"|D]}x|jD] }|VqWqWdS)aF A 1-D flat iterator for Arrayterator objects. This iterator returns elements of the array to be iterated over in `Arrayterator` one by one. It is similar to `flatiter`. See Also -------- Arrayterator flatiter Examples -------- >>> a = np.arange(3 * 4 * 5 * 6).reshape(3, 4, 5, 6) >>> a_itor = np.lib.Arrayterator(a, 2) >>> for subarr in a_itor.flat: ... if not subarr: ... print(subarr, type(subarr)) ... 0 N)flat)rblockvaluer r r r0s  zArrayterator.flatcCs tddt|j|j|jDS)zk The shape of the array to be iterated over. For an example, see `Arrayterator`. css(|] \}}}||d|dVqdS)rNr )r rrrr r r r.sz%Arrayterator.shape..)rr%rrr)rr r r rszArrayterator.shapec csdd|jDrdS|jdd}|jdd}|jdd}|jj}xR|jpZtt|j}d}xt |dddD]~}|dkr||d||<n:||j|kr|||||||<|}n|j|||<t |j|||||<||j|}qrWt ddt |||D}|j|V||||<xZt |dddD]F}|||j|kr8|j|||<||d|j|d7<q8W|d|jdkrJdSqJWdS)NcSsg|]}|dkr|qS)rr )r r r r r r sz)Arrayterator.__iter__..rrcss|]}t|VqdS)N)r )r r-r r r r.sz(Arrayterator.__iter__..) rrrrrrrrrranger&rr%) rrrrZndimscountZrundimr+r)r r r __iter__s6  $zArrayterator.__iter__)N) __name__ __module__ __qualname____doc__rrr,r/propertyr0rr6r r r r rsC    N)r:Z __future__rrroperatorr functoolsrZ numpy.compatr__all__objectrr r r r  s