+
    Ai                     :    ^ RI t ^ RIt^ RIHt RR.tR tRR ltR# )    N)
as_stridedview_as_blocksview_as_windowsc                J   \        V\        4      '       g   \        R4      h\        P                  ! V4      pV^ 8*  P                  4       '       d   \        R4      hVP                  V P                  8w  d   \        R4      h\        P                  ! V P                  4      pW!,          P                  4       ^ 8w  d   \        R4      h\        W!,          4      \        V4      ,           p\        V P                  V,          4      V P                  ,           p\        WVR7      pV# )aZ  Block view of the input n-dimensional array (using re-striding).

Blocks are non-overlapping views of the input array.

Parameters
----------
arr_in : ndarray, shape (M[, ...])
    Input array.
block_shape : tuple
    The shape of the block. Each dimension must divide evenly into the
    corresponding dimensions of `arr_in`.

Returns
-------
arr_out : ndarray
    Block view of the input array.

Examples
--------
>>> import numpy as np
>>> from skimage.util.shape import view_as_blocks
>>> A = np.arange(4*4).reshape(4,4)
>>> A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> B = view_as_blocks(A, block_shape=(2, 2))
>>> B[0, 0]
array([[0, 1],
       [4, 5]])
>>> B[0, 1]
array([[2, 3],
       [6, 7]])
>>> B[1, 0, 1, 1]
13

>>> A = np.arange(4*4*6).reshape(4,4,6)
>>> A  # doctest: +NORMALIZE_WHITESPACE
array([[[ 0,  1,  2,  3,  4,  5],
        [ 6,  7,  8,  9, 10, 11],
        [12, 13, 14, 15, 16, 17],
        [18, 19, 20, 21, 22, 23]],
       [[24, 25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34, 35],
        [36, 37, 38, 39, 40, 41],
        [42, 43, 44, 45, 46, 47]],
       [[48, 49, 50, 51, 52, 53],
        [54, 55, 56, 57, 58, 59],
        [60, 61, 62, 63, 64, 65],
        [66, 67, 68, 69, 70, 71]],
       [[72, 73, 74, 75, 76, 77],
        [78, 79, 80, 81, 82, 83],
        [84, 85, 86, 87, 88, 89],
        [90, 91, 92, 93, 94, 95]]])
>>> B = view_as_blocks(A, block_shape=(1, 2, 2))
>>> B.shape
(4, 2, 3, 1, 2, 2)
>>> B[2:, 0, 2]  # doctest: +NORMALIZE_WHITESPACE
array([[[[52, 53],
         [58, 59]]],
       [[[76, 77],
         [82, 83]]]])
zblock needs to be a tuplez0'block_shape' elements must be strictly positivez9'block_shape' must have the same length as 'arr_in.shape'z-'block_shape' is not compatible with 'arr_in'shapestrides)
isinstancetuple	TypeErrornparrayany
ValueErrorsizendimr   sumr	   r   )arr_inblock_shape	arr_shape	new_shapenew_stridesarr_outs   &&    P/var/www/html/photoedit/myenv/lib/python3.14/site-packages/skimage/util/shape.pyr   r      s    B k5))344((;'KqKLL6;;&WXX&I$$&!+HII i./%2DDI45FK+FGN    c                   \        V \        P                  4      '       g   \        R4      hV P                  p\        V\
        P                  4      '       d   V3V,          p\        V4      V8X  g   \        R4      h\        V\
        P                  4      '       d   V^8  d   \        R4      hV3V,          p\        V4      V8w  d   \        R4      h\        P                  ! V P                  4      p\        P                  ! WP                  R7      pWA,
          ^ 8  P                  4       '       d   \        R4      hV^,
          ^ 8  P                  4       '       d   \        R4      h\        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        P                  ! V P                  4      pW,          P                  p\        P                  ! V P                  4      \        P                  ! V4      ,
          \        P                  ! V4      ,          ^,           p\        \        V4      \        V4      ,           4      p	\        \        V4      \        V4      ,           4      p
\!        W	V
R	7      pV# )
a  Rolling window view of the input n-dimensional array.

Windows are overlapping views of the input array, with adjacent windows
shifted by a single row or column (or an index of a higher dimension).

Parameters
----------
arr_in : ndarray, shape (M[, ...])
    Input array.
window_shape : integer or tuple of length arr_in.ndim
    Defines the shape of the elementary n-dimensional orthotope
    (better know as hyperrectangle [1]_) of the rolling window view.
    If an integer is given, the shape will be a hypercube of
    sidelength given by its value.
step : integer or tuple of length arr_in.ndim
    Indicates step size at which extraction shall be performed.
    If integer is given, then the step is uniform in all dimensions.

Returns
-------
arr_out : ndarray
    (rolling) window view of the input array.

Notes
-----
One should be very careful with rolling views when it comes to
memory usage.  Indeed, although a 'view' has the same memory
footprint as its base array, the actual array that emerges when this
'view' is used in a computation is generally a (much) larger array
than the original, especially for 2-dimensional arrays and above.

For example, let us consider a 3 dimensional array of size (100,
100, 100) of ``float64``. This array takes about 8*100**3 Bytes for
storage which is just 8 MB. If one decides to build a rolling view
on this array with a window of (3, 3, 3) the hypothetical size of
the rolling view (if one was to reshape the view for example) would
be 8*(100-3+1)**3*3**3 which is about 203 MB! The scaling becomes
even worse as the dimension of the input array becomes larger.

References
----------
.. [1] https://en.wikipedia.org/wiki/Hyperrectangle

Examples
--------
>>> import numpy as np
>>> from skimage.util.shape import view_as_windows
>>> A = np.arange(4*4).reshape(4,4)
>>> A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> window_shape = (2, 2)
>>> B = view_as_windows(A, window_shape)
>>> B[0, 0]
array([[0, 1],
       [4, 5]])
>>> B[0, 1]
array([[1, 2],
       [5, 6]])

>>> A = np.arange(10)
>>> A
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> window_shape = (3,)
>>> B = view_as_windows(A, window_shape)
>>> B.shape
(8, 3)
>>> B
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6],
       [5, 6, 7],
       [6, 7, 8],
       [7, 8, 9]])

>>> A = np.arange(5*4).reshape(5, 4)
>>> A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])
>>> window_shape = (4, 3)
>>> B = view_as_windows(A, window_shape)
>>> B.shape
(2, 2, 4, 3)
>>> B  # doctest: +NORMALIZE_WHITESPACE
array([[[[ 0,  1,  2],
         [ 4,  5,  6],
         [ 8,  9, 10],
         [12, 13, 14]],
        [[ 1,  2,  3],
         [ 5,  6,  7],
         [ 9, 10, 11],
         [13, 14, 15]]],
       [[[ 4,  5,  6],
         [ 8,  9, 10],
         [12, 13, 14],
         [16, 17, 18]],
        [[ 5,  6,  7],
         [ 9, 10, 11],
         [13, 14, 15],
         [17, 18, 19]]]])
z `arr_in` must be a numpy ndarrayz2`window_shape` is incompatible with `arr_in.shape`z`step` must be >= 1z*`step` is incompatible with `arr_in.shape`)dtypez`window_shape` is too largez`window_shape` is too smallc              3   <   "   T F  p\        R R V4      x  K  	  R # 5i)N)slice).0sts   & r   	<genexpr>"view_as_windows.<locals>.<genexpr>   s     84R5tR((4s   r   )r
   r   ndarrayr   r   numbersNumberlenr   r   r   r   r   r   r	   listr   )r   window_shapestepr   r   sliceswindow_stridesindexing_strideswin_indices_shaper   r	   r   s   &&&         r   r   r   `   s   ^ fbjj)):;;;;D,//$-%MNN$''!8233w~
4yDEFF&I88L@L		!Q&++--677		Q##%%677 U848UU8488FXXfnn-N~-- 
&,,	"((<"8	8RXXd^K	
 d,-\0BBCID)*T.-AABG'BGNr   )   )r%   numpyr   numpy.lib.stride_tricksr   __all__r   r    r   r   <module>r4      s&      ..
/UpWr   