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
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
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]]