You want to implement the pooling using numpy, aren't you? No? OK, I agree that you don't need to implement the pooling using numpy.
By the way, here is the pooling implemented by numpy.
Source code
import numpy as np
def pooling(a,bsize=(2,2),func=np.max):
  b=np.array([
      [func(a[i:i+bsize[0],j:j+bsize[1]]) for j in range(0,a.shape[1],bsize[1])]
      for i in range(0,a.shape[0],bsize[0])
      ],dtype=a.dtype)
  return b
a=np.array([
    [11,12,13,14,15,16],
    [21,22,23,24,25,26],
    [31,32,33,34,35,36],
    [41,42,43,44,45,46],
    [51,52,53,54,55,56],
    [61,62,63,64,65,66],
    [71,72,73,74,75,76],
    [81,82,83,84,85,86],
    ],dtype=np.float64)
b=pooling(a)
print(a)
print(b)
Output
[[11. 12. 13. 14. 15. 16.]
 [21. 22. 23. 24. 25. 26.]
 [31. 32. 33. 34. 35. 36.]
 [41. 42. 43. 44. 45. 46.]
 [51. 52. 53. 54. 55. 56.]
 [61. 62. 63. 64. 65. 66.]
 [71. 72. 73. 74. 75. 76.]
 [81. 82. 83. 84. 85. 86.]]
[[22. 24. 26.]
 [42. 44. 46.]
 [62. 64. 66.]
 [82. 84. 86.]]