web-dev-qa-db-fra.com

Sous-échantillonnage d'un tableau numpy 2D en python

Je suis auto-apprentissage python et j'ai trouvé un problème qui nécessite de sous-échantillonner un vecteur de caractéristiques. J'ai besoin d'aide pour comprendre comment sous-échantillonner un tableau. dans le tableau, chaque ligne représente une image en numérotant de 0 à 255. Je me demandais comment vous appliquiez un sous-échantillonnage au tableau? Je ne veux pas scikit-learn parce que je veux comprendre comment appliquer un sous-échantillonnage ... Si vous pouviez aussi expliquer un sous-échantillonnage, ce serait génial merci. 

le vecteur de fonction est 400x250

8
Neo Streets

Si, avec le sous-échantillonnage, vous voulez dire quelque chose comme ceci , vous pouvez simplement couper le tableau. Pour un exemple 1D:

import numpy as np
a = np.arange(1,11,1)
print(a)
print(a[::3])

La dernière ligne est équivalente à:

print(a[0:a.size:3])

avec la notation de découpage en tant que start:stop:step

Résultat:

[1 2 3 4 5 6 7 8 9 10]

[1 4 7 10]

Pour un tableau 2D, l'idée est la même:

b = np.arange(0,100)
c = b.reshape([10,10])
print(c[::3,::3])

Cela vous donne, dans les deux dimensions, chaque troisième élément du tableau d'origine. 

Ou, si vous voulez seulement échantillonner une seule dimension:

d = np.zeros((400,250))
print(d.shape)
e = d[::10,:]
print(e.shape) 

(400, 250)

(40, 250)

Il existe de nombreux autres exemples dans le manuel Numpy

15
Bart

Je suppose que vous voulez supprimer toutes les autres lignes et colonnes de la matrice. Voici un exemple simple avec un tableau 2-D numpy:

import numpy as np
a=np.arange(0,16).reshape(4,4)
dc=a[:,range(0,a.shape[1],2)]
drdc=dc[range(0,a.shape[0],2),:]
print(a)
print(drdc)

La sortie est:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 0  2]
 [ 8 10]]
0
ashkan