logo

numpy.pad() em Python

O módulo numpy do Python fornece uma função chamada numpy.pad() para realizar o preenchimento no array. Esta função possui vários parâmetros obrigatórios e opcionais.

Sintaxe:

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

Parâmetros:

matriz: array_like

Este é o array de origem que queremos preencher.

pad_width: int, sequência ou array_like

Este parâmetro define o número de valores que são preenchidos nas bordas de cada eixo. As larguras de bloco exclusivas para cada eixo são definidas como (antes_1, depois_1), (antes_2, depois_2), ... (antes_N, depois_N)). Para cada eixo, ((antes, depois),) será tratado da mesma forma que antes e depois do bloco. Para todos os eixos, o int, ou (pad,) é um atalho para antes = depois = largura do bloco.

modo: str ou função (opcional)

Este parâmetro possui um dos seguintes valores de string:

'constante' (padrão)

matrizes bash

Se atribuirmos um valor constante ao parâmetro mode, o preenchimento será feito com um valor constante.

'borda'

É o valor limite da matriz. O preenchimento será feito com este valor de aresta.

'rampa_linear'

Este valor é usado para realizar o preenchimento com a rampa linear entre o valor da borda e o valor final.

'máximo'

Este valor de parâmetro executa o preenchimento usando o valor máximo de uma parte do vetor ou de todas, ao longo de cada eixo.

'significar'

Este valor de parâmetro realiza o preenchimento através do valor médio de uma parte do vetor ou de todas, ao longo de cada eixo.

'mediana'

Este valor de parâmetro realiza o preenchimento através do valor mediano de uma parte do vetor ou de todas, ao longo de cada eixo.

'mínimo'

Este valor de parâmetro realiza o preenchimento por meio do valor mínimo de uma parte do vetor ou de todas, ao longo de cada eixo.

'refletir'

Este valor preenche a matriz por meio da reflexão do vetor, que é espelhada nos valores iniciais e finais do vetor, ao longo de cada eixo.

'simétrico'

Este valor é usado para preencher a matriz por meio de reflexão vetorial, que é espelhada ao longo da borda da matriz.

'enrolar'

Este valor é usado para realizar o preenchimento da matriz por meio da quebra do vetor ao longo do eixo. Os valores iniciais são usados ​​para preencher o final e os valores finais preenchem o início.

'vazio'

Este valor é usado para preencher a matriz com valores indefinidos.

stat_length: int ou sequência (opcional)

Este parâmetro é usado em 'máximo', 'mínimo', 'média', 'mediana'. Define a quantidade de valores em cada eixo da aresta, utilizados para cálculo do valor estático.

valores_constantes: escalar ou sequência (opcional)

Este parâmetro é usado em 'constante'. Ele define os valores para definir os valores preenchidos para cada eixo.

end_values: escalar ou sequência (opcional)

Este parâmetro é usado em 'linear_ramp'. Ele define os valores que são usados ​​para o último valor da linear_ramp e formará a borda do array preenchido.

reflect_type: par ou ímpar (opcional)

Este parâmetro é usado em 'simétrico' e 'refletir'. Por padrão, o reflect_type é 'par' com uma reflexão inalterada em torno do valor da borda. Ao subtrair os valores refletidos de duas vezes o valor da aresta, a parte estendida da matriz é criada para o estilo 'ímpar'.

Retorna:

bloco: ndarray

string separada em java

Esta função retorna o array preenchido de classificação igual ao array, cuja forma aumenta de acordo com pad_width.

Exemplo 1:

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

Saída:

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

No código acima

  • Importamos numpy com o nome alternativo np.
  • Criamos uma lista de valores x.
  • Declaramos a variável y e atribuímos o valor retornado da função np.pad().
  • Passamos a lista x, pad_width, definimos o modo para constante e valores_constantes na função.
  • Por último, tentamos imprimir o valor de y.

Na saída, mostra um ndarray preenchido com o tamanho e os valores definidos.

Exemplo 2:

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

Saída:

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

Exemplo 3:

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

Saída:

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

Exemplo 4:

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

Saída:

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

Exemplo 5:

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

Saída:

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

Exemplo 6:

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

Saída:

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

Exemplo 7:

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

Saída:

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

Exemplo 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 

Saída:

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

No código acima

  • Importamos numpy com o nome alternativo np.
  • Criamos uma função pad_com com vetor , largura_do_pad , eixo , e kwargs .
  • Declaramos a variável pad_value para obter valores de preenchimento do pegar() função.
  • Passamos os valores de preenchimento para a parte do vetor.
  • Criamos um array x usando a função np.arange() e alteramos a forma usando a função reshape().
  • Declaramos uma variável y e atribuímos o valor retornado da função np.pad().
  • Passamos a lista x e pad_width na função
  • Por último, tentamos imprimir o valor de y.

Na saída, mostra um ndarray preenchido com o tamanho e os valores definidos.

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

Saída:

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

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

Saída:

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