Comment sélectionner dans une matrice un indice donnée et ses voisins avec numpy en python ?

Exemple de comment sélectionner dans une matrice un indice donnée et ses voisins avec numpy en python

Créer une matrice avec numpy

Créons une matrice de dimension (6,6):

import numpy as np

A = np.arange(36)
A = A.reshape(6,6)

print(A)

donne

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]]

Sélectionner un indice donnée et ses voisins

Sélectionnons par exemple l'indice (3,4):

index = [3,4]

la valeur associée à l'indice ci-dessus est:

print(A[3,4])

22

Pour sélectionner les premiers voisins à partir de cet index, une solution est de faire comme ceci:

num_neighbor = 1

left = max(0,index[0]-num_neighbor)
right = max(0,index[0]+num_neighbor+1)

bottom = max(0,index[1]-num_neighbor)
top = max(0,index[1]+num_neighbor+1)

sample = A[left:right,bottom:top]

    print(sample)

donne

[[15 16 17]
 [21 22 23]
 [27 28 29]]

Références