





'''simple docstring'''


import numpy as np
from PIL import Image


def 	__a(SCREAMING_SNAKE_CASE_  :					np.ndarray		,       SCREAMING_SNAKE_CASE_  :					int		,       SCREAMING_SNAKE_CASE_  :					int    ):



    '''simple docstring'''





    _lowerCAmelCase				=      np.array(SCREAMING_SNAKE_CASE_    )
    if arr.shape[0] != arr.shape[1]:
        raise ValueError("The input array is not a square matrix"    )
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0

    # compute the shape of the output matrix
    _lowerCAmelCase				=      (arr.shape[0] - size) // stride + 1
    # initialize the output matrix with zeros of shape maxpool_shape
    _lowerCAmelCase				=      np.zeros((maxpool_shape, maxpool_shape)    )

    while i < arr.shape[0]:
        if i + size > arr.shape[0]:
            # if the end of the matrix is reached, break
            break
        while j < arr.shape[1]:
            # if the end of the matrix is reached, break
            if j + size > arr.shape[1]:
                break
            # compute the maximum of the pooling matrix
            _lowerCAmelCase				=      np.max(arr[i : i + size, j : j + size]    )
            # shift the pooling matrix by stride of column pixels
            j += stride
            mat_j += 1

        # shift the pooling matrix by stride of row pixels
        i += stride
        mat_i += 1

        # reset the column index to 0
        _lowerCAmelCase				=      0
        _lowerCAmelCase				=      0

    return updated_arr


def 	__a(SCREAMING_SNAKE_CASE_  :					np.ndarray		,       SCREAMING_SNAKE_CASE_  :					int		,       SCREAMING_SNAKE_CASE_  :					int    ):



    '''simple docstring'''





    _lowerCAmelCase				=      np.array(SCREAMING_SNAKE_CASE_    )
    if arr.shape[0] != arr.shape[1]:
        raise ValueError("The input array is not a square matrix"    )
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0
    _lowerCAmelCase				=      0

    # compute the shape of the output matrix
    _lowerCAmelCase				=      (arr.shape[0] - size) // stride + 1
    # initialize the output matrix with zeros of shape avgpool_shape
    _lowerCAmelCase				=      np.zeros((avgpool_shape, avgpool_shape)    )

    while i < arr.shape[0]:
        # if the end of the matrix is reached, break
        if i + size > arr.shape[0]:
            break
        while j < arr.shape[1]:
            # if the end of the matrix is reached, break
            if j + size > arr.shape[1]:
                break
            # compute the average of the pooling matrix
            _lowerCAmelCase				=      int(np.average(arr[i : i + size, j : j + size]    )    )
            # shift the pooling matrix by stride of column pixels
            j += stride
            mat_j += 1

        # shift the pooling matrix by stride of row pixels
        i += stride
        mat_i += 1
        # reset the column index to 0
        _lowerCAmelCase				=      0
        _lowerCAmelCase				=      0

    return updated_arr


# Main Function
if __name__ == "__main__":
       from doctest import testmod

       testmod(name="avgpooling", verbose=True)

       # Loading the image
       _SCREAMING_SNAKE_CASE	 =							Image.open("path_to_image")

       # Converting the image to numpy array and maxpooling, displaying the result
       # Ensure that the image is a square matrix

       Image.fromarray(maxpooling(np.array(image), size=3, stride=2)).show()

       # Converting the image to numpy array and averagepooling, displaying the result
       # Ensure that the image is a square matrix

       Image.fromarray(avgpooling(np.array(image), size=3, stride=2)).show()









'''simple docstring'''


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


_SCREAMING_SNAKE_CASE	 =							{
    "configuration_bigbird_pegasus": [
        "BIGBIRD_PEGASUS_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "BigBirdPegasusConfig",
        "BigBirdPegasusOnnxConfig",
    ],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       _SCREAMING_SNAKE_CASE	 =							[
           "BIGBIRD_PEGASUS_PRETRAINED_MODEL_ARCHIVE_LIST",
           "BigBirdPegasusForCausalLM",
           "BigBirdPegasusForConditionalGeneration",
           "BigBirdPegasusForQuestionAnswering",
           "BigBirdPegasusForSequenceClassification",
           "BigBirdPegasusModel",
           "BigBirdPegasusPreTrainedModel",
       ]


if TYPE_CHECKING:
       from .configuration_bigbird_pegasus import (
           BIGBIRD_PEGASUS_PRETRAINED_CONFIG_ARCHIVE_MAP,
           BigBirdPegasusConfig,
           BigBirdPegasusOnnxConfig,
       )

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_bigbird_pegasus import (
                  BIGBIRD_PEGASUS_PRETRAINED_MODEL_ARCHIVE_LIST,
                  BigBirdPegasusForCausalLM,
                  BigBirdPegasusForConditionalGeneration,
                  BigBirdPegasusForQuestionAnswering,
                  BigBirdPegasusForSequenceClassification,
                  BigBirdPegasusModel,
                  BigBirdPegasusPreTrainedModel,
              )


else:
       import sys

       _SCREAMING_SNAKE_CASE	 =							_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)


