





import numpy as np
from PIL import Image


def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						):
		lowerCamelCase_	:     str 						=      np.array(lowerCAmelCase__						)
		if arr.shape[0] != arr.shape[1]:
				raise ValueError('The input array is not a square matrix'						)
		lowerCamelCase_	:     List[str] 						=      0
		lowerCamelCase_	:     Optional[int] 						=      0
		lowerCamelCase_	:     List[Any] 						=      0
		lowerCamelCase_	:     Dict 						=      0

		# compute the shape of the output matrix
		lowerCamelCase_	:     Tuple 						=      (arr.shape[0] - size) // stride + 1
		# initialize the output matrix with zeros of shape maxpool_shape
		lowerCamelCase_	:     Union[str, Any] 						=      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_	:     List[str] 						=      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_	:     int 						=      0
				lowerCamelCase_	:     Union[str, Any] 						=      0

		return updated_arr


def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						):
		lowerCamelCase_	:     List[Any] 						=      np.array(lowerCAmelCase__						)
		if arr.shape[0] != arr.shape[1]:
				raise ValueError('The input array is not a square matrix'						)
		lowerCamelCase_	:     int 						=      0
		lowerCamelCase_	:     Optional[int] 						=      0
		lowerCamelCase_	:     Any 						=      0
		lowerCamelCase_	:     str 						=      0

		# compute the shape of the output matrix
		lowerCamelCase_	:     List[Any] 						=      (arr.shape[0] - size) // stride + 1
		# initialize the output matrix with zeros of shape avgpool_shape
		lowerCamelCase_	:     Union[str, Any] 						=      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_	:     Union[str, Any] 						=      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_	:     Tuple 						=      0
				lowerCamelCase_	:     Optional[int] 						=      0

		return updated_arr


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

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

		# Loading the image
		_lowercase		:  Dict			       =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()







import warnings

from ...utils import logging
from .image_processing_yolos import YolosImageProcessor


_lowercase		:  int			       =logging.get_logger(__name__)






class 						UpperCamelCase_  (  snake_case__							):



					def __init__(		self     :     Tuple       ,      *lowerCamelCase     :     List[Any]       ,      **lowerCamelCase     :     Union[str, Any]						):
							warnings.warn(
							    'The class YolosFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please'
							    ' use YolosImageProcessor instead.'       ,      lowerCamelCase       ,      )
							super().__init__(*lowerCamelCase       ,      **lowerCamelCase						)
