logo

numpy.pad() în Python

Modulul numpy din Python oferă o funcție numită numpy.pad() pentru a efectua umplutură în matrice. Această funcție are câțiva parametri obligatorii și opționali.

Sintaxă:

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

Parametri:

matrice: array_like

Aceasta este matricea sursă pe care vrem să o tamponăm.

pad_width: int, secvență sau array_like

Acest parametru definește numărul de valori care sunt adăugate la marginile fiecărei axe. Lățimile unice ale plăcuțelor pentru fiecare axă sunt definite ca (înainte de_1, după_1), (înainte de_2, după_2), ... (înainte de_N, de după_N)). Pentru fiecare axă, ((înainte, după),) va fi tratată la fel ca înainte și după pad. Pentru toate axele, int sau (pad,) este o scurtătură către înainte = după = lățimea padului.

modul: str sau function (optional)

Acest parametru are una dintre următoarele valori de șir:

„constant” (implicit)

retele neuronale artificiale

Dacă atribuim o valoare constantă parametrului mode, umplutura se va face cu o valoare constantă.

'margine'

Este valoarea marginii matricei. Umplutura se va face cu această valoare de margine.

'liniar_ramp'

Această valoare este utilizată pentru a efectua umplutura cu rampa liniară între valoarea marginii și valoarea finală.

'maxim'

Această valoare a parametrului realizează umplutura folosind valoarea maximă a unei părți vectoriale sau a tuturor, de-a lungul fiecărei axe.

'Rău'

Această valoare a parametrului realizează umplutura prin valoarea medie a unei părți vectoriale sau a tuturor, de-a lungul fiecărei axe.

'median'

Această valoare a parametrului realizează umplutura prin valoarea mediană a unei părți vectoriale sau a tuturor, de-a lungul fiecărei axe.

'minim'

Această valoare a parametrului realizează umplutura prin valoarea minimă a unei părți vectoriale sau a tuturor, de-a lungul fiecărei axe.

'Reflectați'

Această valoare completează matricea prin reflexia vectorială, care este reflectată pe valorile vectorului de început și de sfârșit, de-a lungul fiecărei axe.

'simetric'

Această valoare este folosită pentru a completa matricea prin reflexie vectorială, care este oglindită de-a lungul marginii matricei.

„înfășurare”

Această valoare este utilizată pentru a efectua umplutura matricei prin înfășurarea vectorului de-a lungul axei. Valorile inițiale sunt folosite pentru a completa sfârșitul, iar valorile de sfârșit sunt folosite pentru a completa începutul.

'gol'

Această valoare este folosită pentru a completa matricea cu valori nedefinite.

stat_length: int sau secvență (opțional)

Acest parametru este utilizat în „maximum”, „minim”, „medie”, „mediană”. Acesta definește numărul de valori la fiecare axă de margine, utilizat pentru calcularea valorii statice.

constant_values: scalar sau secvență (opțional)

Acest parametru este utilizat în „constant”. Acesta definește valorile pentru setarea valorilor captusite pentru fiecare axă.

end_values: scalar sau secvență (opțional)

Acest parametru este utilizat în 'linear_ramp'. Acesta definește valorile care sunt utilizate pentru ultima valoare a rampei_liniare și vor forma marginea matricei căptușite.

reflect_type: par sau impar (opțional)

Acest parametru este utilizat în „simetric” și „reflect”. În mod implicit, reflect_type este „even” cu o reflectare nemodificată în jurul valorii marginii. Prin scăderea valorilor reflectate din două ori valoarea marginii, partea extinsă a matricei este creată pentru stilul „impar”.

Se intoarce:

pad: ndarray

Această funcție returnează matricea căptușită de rang egal cu matricea, a cărei formă crește în funcție de pad_width.

Exemplul 1:

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

Ieșire:

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

În codul de mai sus

  • Am importat numpy cu numele de alias np.
  • Am creat o listă de valori x.
  • Am declarat variabila y și am atribuit valoarea returnată a funcției np.pad().
  • Am trecut lista x, pad_width, setați modul la constant și valori_constante in functie.
  • În cele din urmă, am încercat să tipărim valoarea lui y.

În ieșire, arată un ndarray căptușit cu dimensiunea și valorile definite.

Exemplul 2:

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

Ieșire:

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

Exemplul 3:

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

Ieșire:

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

Exemplul 4:

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

Ieșire:

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

Exemplul 5:

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

Ieșire:

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

Exemplul 6:

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

Ieșire:

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

Exemplul 7:

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

Ieșire:

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

Exemplul 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 

Ieșire:

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

În codul de mai sus

numpy unic
  • Am importat numpy cu numele de alias np.
  • Am creat o funcție pad_cu cu vector , pad_width , iaxa , și kwargs .
  • Am declarat variabila pad_value pentru a obține valori de umplutură de la obține() funcţie.
  • Am trecut valorile de umplutură în partea vectorului.
  • Am creat o matrice x folosind funcția np.arange() și am schimbat forma folosind funcția reshape().
  • Am declarat o variabilă y și am atribuit valoarea returnată a funcției np.pad().
  • Am trecut lista x și pad_width în funcție
  • În cele din urmă, am încercat să tipărim valoarea lui y.

În ieșire, arată un ndarray căptușit cu dimensiunea și valorile definite.

Exemplul 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) 

Ieșire:

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

Exemplul 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) 

Ieșire:

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