



"""simple docstring"""
import numpy as np
from PIL import Image


def 			_SCREAMING_SNAKE_CASE						(__lowerCAmelCase ,  __lowerCAmelCase ,  __lowerCAmelCase							) ->						np.ndarray:







		'''simple docstring'''


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

		# compute the shape of the output matrix
		lowercase_								= (arr.shape[0] - size) // stride + 1
		# initialize the output matrix with zeros of shape maxpool_shape
		lowercase_								= 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
						lowercase_								= 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
				lowercase_								= 0
				lowercase_								= 0

		return updated_arr


def 			_SCREAMING_SNAKE_CASE						(__lowerCAmelCase ,  __lowerCAmelCase ,  __lowerCAmelCase							) ->						np.ndarray:







		'''simple docstring'''


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

		# compute the shape of the output matrix
		lowercase_								= (arr.shape[0] - size) // stride + 1
		# initialize the output matrix with zeros of shape avgpool_shape
		lowercase_								= 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
						lowercase_								= 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
				lowercase_								= 0
				lowercase_								= 0

		return updated_arr


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

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

							# Loading the image
							UpperCAmelCase						:		int			= 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 _LazyModule


UpperCAmelCase						:		List[Any]			= {"tokenization_bertweet": ["BertweetTokenizer"]}


if TYPE_CHECKING:
       from .tokenization_bertweet import BertweetTokenizer

else:
       import sys

       UpperCAmelCase						:		Tuple			= _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)

