Guest User

Untitled

a guest
Oct 23rd, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. import numpy as np
  2.  
  3. def compare_neighbors(arr):
  4. '''
  5. Checks if element (i,j) is different than (i-1,j),(i+1,j),(i,j-1), or
  6. (i,j+1).
  7.  
  8. --Input--
  9. arr: (2D np.array) array to compare all elements of
  10.  
  11. --Returns--
  12. comp_arr: (2D bool np.array) bool array with the resulting comparisons.
  13. True means the original element is the same as its neighbors,
  14. False means it was different than at least neighbor
  15. '''
  16. comp_arr = np.full(arr.shape, False, dtype=bool) #initialize
  17. arr_width = arr.shape[0]
  18. arr_height = arr.shape[1]
  19.  
  20. for i in range(arr_width): #Row
  21. for j in range(arr_height): #column
  22.  
  23. #Check edges
  24. if i == 0: #left side
  25. left = arr[i,j]
  26. else:
  27. left = arr[i-1, j]
  28.  
  29. if i == arr_width - 1: #right side
  30. right = arr[i,j]
  31. else:
  32. right = arr[i+1,j]
  33.  
  34. if j == 0: #up
  35. up = arr[i,j]
  36. else:
  37. up = arr[i, j-1]
  38.  
  39. if j == arr_height - 1: #down
  40. down = arr[i,j]
  41. else:
  42. down = arr[i, j+1]
  43.  
  44. comp_arr[i,j] = len(set([left, right, up, down])) == 1 #compare
  45. return comp_arr
  46.  
  47. [[1 1]
  48. [1 1]]
  49.  
  50. [[ True True]
  51. [ True True]]
  52.  
  53. [[2 2]
  54. [2 2]]
  55.  
  56. [[ True True]
  57. [ True True]]
  58.  
  59. [[1 1 1 1 1 1 1 1 1]
  60. [1 1 1 1 1 1 1 1 1]
  61. [1 2 2 2 2 2 2 2 1]
  62. [1 2 2 1 1 1 2 2 1]
  63. [1 2 2 2 2 2 2 2 1]
  64. [1 1 1 1 1 1 1 1 1]]
  65.  
  66. [[ True True True True True True True True True]
  67. [ True False False False False False False False True]
  68. [False False False False False False False False False]
  69. [False False False False False False False False False]
  70. [False False False False False False False False False]
  71. [ True False False False False False False False True]]
Add Comment
Please, Sign In to add comment