J'essaie de créer une matrice gaussienne floue. Je modifie le code de http://www.labri.fr/perso/nrougier/teaching/numpy/numpy.htmlVectorisation avec numpy
dev_data a des rangées de fonctionnalités de 784 pixels, et je voudrais flouter avec les voisins autour du pixel en question avec le pixel lui-même. Lorsque nous sommes sur les bords extérieurs (lignes 1, -1, colonnes 1, -1), ignorez les voisins hors limites. Je ne suis pas sûr de savoir comment faire ce rejet.
code:
# Initialize a new feature array with the same shape as the original data.
blurred_dev_data = np.zeros(dev_data.shape)
#we will reshape the 784 feature-long rows into 28x28 matrices
for i in range(dev_data.shape[0]):
reshaped_dev_data = np.reshape(dev_data[i], (28,28))
#the purpose of the reshape is to use the average of the 8 pixels + the pixel itself to blur
for idx, pixel in enumerate(reshaped_dev_data):
pixel = np.mean(reshaped_dev_data[idx-1:idx-1,idx-1:idx-1] + reshaped_dev_data[idx-1:idx-1,idx:idx] + reshaped_dev_data[idx-1:idx-1,idx+1:] +
reshaped_dev_data[idx:idx,idx-1:idx-1] + reshaped_dev_data[idx:idx,idx:idx] + reshaped_dev_data[idx:idx,idx+1:] +
reshaped_dev_data[idx+1: ,idx-1:idx-1] + reshaped_dev_data[idx+1: ,idx:idx] + reshaped_dev_data[idx+1: ,idx+1:])
blurred_dev_data[i,:] = reshaped_dev_data.ravel()
Je reçois une erreur avec l'index:
ValueError: operands could not be broadcast together with shapes (0,0) (0,27)
Ce n'est pas un IndexError, donc je ne suis pas tout à fait sûr de ce que je fais mal ici/comment répare le.
Editez 'reshaped_dev_data [idx-1: idx-1, idx-1: idx-1]' à 'reshaped_dev_data [idx-1, idx-1]' et ainsi de suite. – Divakar
merci. maintenant je reçois l'erreur hors limites que je m'attendais. Connaissez-vous un bon moyen d'ignorer les indices hors limites? –
Je suggère plutôt d'utiliser un filtre de flou guassien plutôt - https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.ndimage.filters.gaussian_filter.html – Divakar