Использовать логический mask
массив:
arr = np.random.permutation(np.arange(25)).reshape(5,5)
>>> arr
array([[15, 9, 7, 1, 22],
[16, 4, 2, 19, 13],
[12, 3, 23, 8, 6],
[ 0, 20, 21, 10, 14],
[18, 5, 24, 11, 17]])
Выше строится случайная матрица для этой цели.
# Build mask
mask = np.ones((5,5)) == True
mask[1:4, 1:4] = False
>>> mask
array([[ True, True, True, True, True],
[ True, False, False, False, True],
[ True, False, False, False, True],
[ True, False, False, False, True],
[ True, True, True, True, True]])
# Extract values:
>>> arr[mask]
array([15, 9, 7, 1, 22, 16, 13, 12, 6, 0, 14, 18, 5, 24, 11, 17])
Создайте следующую маску для внутреннего круга:
mask = np.ones((5,5)) == False
mask[1:4, 1:4] = True
mask[2,2] = False
>>> mask
array([[False, False, False, False, False],
[False, True, True, True, False],
[False, True, False, True, False],
[False, True, True, True, False],
[False, False, False, False, False]])
arr[mask]
>>> array([ 0, 15, 20, 16, 4, 1, 6, 8])