logo

numpy.pad() en Python

El mòdul numpy de Python proporciona una funció anomenada numpy.pad() per realitzar el farciment a la matriu. Aquesta funció té diversos paràmetres obligatoris i opcionals.

Sintaxi:

 numpy.pad(array, pad_width, mode='constant', **kwargs) 

Paràmetres:

matriu: array_like

Aquesta és la matriu d'origen que volem estampar.

pad_width: int, seqüència o array_like

Aquest paràmetre defineix el nombre de valors que s'embotiquen a les vores de cada eix. Les amplades de coixinet úniques per a cada eix es defineixen com (abans_1, després_1), (abans_2, després_2), ... (abans_N, després_N)). Per a cada eix, ((abans, després),) es tractarà de la mateixa manera que abans i després del coixinet. Per a tots els eixos, int, o (pad,) és una drecera a abans = després = amplada del coixinet.

mode: str o funció (opcional)

Aquest paràmetre té un dels valors de cadena següents:

'constant' (per defecte)

python desa json al fitxer

Si assignem un valor constant al paràmetre mode, el farciment es farà amb un valor constant.

'bord'

És el valor de vora de la matriu. El farciment es farà amb aquest valor de vora.

'rampa_lineal'

Aquest valor s'utilitza per realitzar el farciment amb la rampa lineal entre el valor de vora i el valor final.

'màxim'

Aquest valor de paràmetre realitza el farciment utilitzant el valor màxim d'una part del vector o de totes, al llarg de cada eix.

'significar'

Aquest valor de paràmetre realitza el farciment mitjançant el valor mitjà d'una part del vector o de tot, al llarg de cada eix.

'mediana'

Aquest valor de paràmetre realitza el farciment mitjançant el valor mitjà d'una part del vector o de tot, al llarg de cada eix.

'mínim'

Aquest valor de paràmetre realitza el farciment mitjançant el valor mínim d'una part del vector o de tot, al llarg de cada eix.

'reflexionar'

Aquest valor rellena la matriu mitjançant la reflexió vectorial, que es reflecteix en els valors vectorials inicial i final, al llarg de cada eix.

'simètric'

Aquest valor s'utilitza per emplatar la matriu mitjançant la reflexió vectorial, que es reflecteix al llarg de la vora de la matriu.

'embolicar'

Aquest valor s'utilitza per fer el farciment de la matriu mitjançant l'embolcall del vector al llarg de l'eix. Els valors inicials s'utilitzen per farcir el final, i els valors finals s'utilitzen per al principi.

'buit'

Aquest valor s'utilitza per farcir la matriu amb valors no definits.

llistes java

longitud_estat: int o seqüència (opcional)

Aquest paràmetre s'utilitza a 'màxim', 'mínim', 'mitjana', 'mediana'. Defineix el nombre de valors a cada eix de vora, utilitzat per calcular el valor estàtic.

constant_values: escalar o seqüència (opcional)

Aquest paràmetre s'utilitza en 'constant'. Defineix els valors per establir els valors encoixinats a cada eix.

valors_finals: escalar o seqüència (opcional)

Aquest paràmetre s'utilitza a 'linear_ramp'. Defineix els valors que s'utilitzen per a l'últim valor de la rampa_lineal i formaran la vora de la matriu encoixinada.

reflect_type: parell o imparell (opcional)

Aquest paràmetre s'utilitza en 'simètric' i 'reflect'. Per defecte, reflect_type és 'parell' amb un reflex inalterat al voltant del valor de la vora. En restar els valors reflectits de dues vegades el valor de la vora, es crea la part estesa de la matriu per a l'estil 'senir'.

Devolucions:

coixinet: ndarray

Aquesta funció retorna la matriu encoixinada de rang igual a la matriu, la forma de la qual augmenta segons pad_width.

Exemple 1:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'constant', constant_values=(6, 4)) y 

Sortida:

 array([6, 6, 6, 1, 3, 2, 5, 4, 4, 4]) 

En el codi anterior

  • Hem importat numpy amb el nom d'àlies np.
  • Hem creat una llista de valors x.
  • Hem declarat la variable y i hem assignat el valor retornat de la funció np.pad().
  • Hem passat la llista x, pad_width, establim el mode a constant i valors_constants en la funció.
  • Finalment, hem intentat imprimir el valor de y.

A la sortida, mostra un ndarray encoixinat amb la mida i els valors definits.

Exemple 2:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'edge') y 

Sortida:

 array([1, 1, 1, 1, 3, 2, 5, 4, 4, 4]) 

Exemple 3:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3, 2), 'linear_ramp', end_values=(-4, 5)) y 

Sortida:

 array([-4, -2, 0, 1, 3, 2, 5, 4, 4, 5]) 

Exemple 4:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'maximum') y 

Sortida:

 array([5, 5, 5, 1, 3, 2, 5, 4, 5, 5, 5]) 

Exemple 5:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'mean') y 

Sortida:

 array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3]) 

Exemple 6:

 import numpy as np x = [1, 3, 2, 5, 4] y = np.pad(x, (3,), 'median') y 

Sortida:

 array([3, 3, 3, 1, 3, 2, 5, 4, 3, 3, 3]) 

Exemple 7:

 import numpy as np a = [[1, 2], [3, 4]] y = np.pad(x, (3,), 'minimum') y 

Sortida:

 array([[1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [3, 3, 3, 3, 4, 3, 3], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1], [1, 1, 1, 1, 2, 1, 1]]) 

Exemple 8:

 import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) y = np.pad(x, 3, pad_with) y 

Sortida:

 array([41, 31, 21, 11, 21, 31, 41, 51, 41, 31]) 

En el codi anterior

  • Hem importat numpy amb el nom d'àlies np.
  • Hem creat una funció coixinet_amb amb vector , amplada_coixinet , iaxis , i kwargs .
  • Hem declarat la variable pad_value per obtenir valors de farciment de la aconseguir() funció.
  • Hem passat els valors de farciment a la part del vector.
  • Hem creat una matriu x amb la funció np.arange() i hem canviat la forma mitjançant la funció reshape().
  • Hem declarat una variable y i hem assignat el valor retornat de la funció np.pad().
  • Hem passat la llista x i pad_width a la funció
  • Finalment, hem intentat imprimir el valor de y.

A la sortida, mostra un ndarray encoixinat amb la mida i els valors definits.

Exemple 9:

 import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): padding_value = kwargs.get('padder', 10) vector[:pad_width[0]] = padding_value vector[-pad_width[1]:] = padding_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with) 

Sortida:

 array([[10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 0, 1, 10, 10, 10], [10, 10, 10, 2, 3, 10, 10, 10], [10, 10, 10, 4, 5, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10, 10]]) 

Exemple 10:

 import numpy as np import numpy as np def pad_with(vector, pad_width, iaxis, kwargs): ... pad_value = kwargs.get('padder', 10) ... vector[:pad_width[0]] = pad_value ... vector[-pad_width[1]:] = pad_value x = np.arange(6) x = x.reshape((3, 2)) np.pad(x, 3, pad_with, padder=100) 

Sortida:

 array([[100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 0, 1, 100, 100, 100], [100, 100, 100, 2, 3, 100, 100, 100], [100, 100, 100, 4, 5, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100, 100]])