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