Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def compare_neighbors(arr):
- '''
- Checks if element (i,j) is different than (i-1,j),(i+1,j),(i,j-1), or
- (i,j+1).
- --Input--
- arr: (2D np.array) array to compare all elements of
- --Returns--
- comp_arr: (2D bool np.array) bool array with the resulting comparisons.
- True means the original element is the same as its neighbors,
- False means it was different than at least neighbor
- '''
- comp_arr = np.full(arr.shape, False, dtype=bool) #initialize
- arr_width = arr.shape[0]
- arr_height = arr.shape[1]
- for i in range(arr_width): #Row
- for j in range(arr_height): #column
- #Check edges
- if i == 0: #left side
- left = arr[i,j]
- else:
- left = arr[i-1, j]
- if i == arr_width - 1: #right side
- right = arr[i,j]
- else:
- right = arr[i+1,j]
- if j == 0: #up
- up = arr[i,j]
- else:
- up = arr[i, j-1]
- if j == arr_height - 1: #down
- down = arr[i,j]
- else:
- down = arr[i, j+1]
- comp_arr[i,j] = len(set([left, right, up, down])) == 1 #compare
- return comp_arr
- [[1 1]
- [1 1]]
- [[ True True]
- [ True True]]
- [[2 2]
- [2 2]]
- [[ True True]
- [ True True]]
- [[1 1 1 1 1 1 1 1 1]
- [1 1 1 1 1 1 1 1 1]
- [1 2 2 2 2 2 2 2 1]
- [1 2 2 1 1 1 2 2 1]
- [1 2 2 2 2 2 2 2 1]
- [1 1 1 1 1 1 1 1 1]]
- [[ True True True True True True True True True]
- [ True False False False False False False False True]
- [False False False False False False False False False]
- [False False False False False False False False False]
- [False False False False False False False False False]
- [ True False False False False False False False True]]
Add Comment
Please, Sign In to add comment