Disminuye el muestreo de una matriz numpy 2d en python

Estoy aprendiendo a usar Python y he encontrado un problema que requiere un muestreo descendente de un vector de características. Necesito un poco de ayuda para entender cómo muestrear una matriz. en la matriz, cada fila representa una imagen siendo un número del 0 al 255 . Me pregunto cómo se aplica el muestreo descendente a la matriz? No quiero scikit-learn porque quiero entender cómo aplicar el muestreo descendente. Si pudieras explicar el down-sample también sería increíble gracias.

el vector de características es 400×250

Si con submuestreo te refieres a algo como esto , simplemente puedes cortar la matriz. Para un ejemplo 1D:

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

La última línea es equivalente a:

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

con la notación de corte como start:stop:step

Resultado:

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

[1 4 7 10]

Para una matriz 2D la idea es la misma:

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

Esto le da, en ambas dimensiones, cada tercer elemento de la matriz original.

O, si solo desea muestrear una única dimensión:

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

(400, 250)

(40, 250)

Hay muchos otros ejemplos en el manual de Numpy.

Supongo que desea eliminar todas las demás filas y columnas de la matriz. Aquí está un ejemplo simple con una matriz numpy 2-D:

 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 salida es:

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