HOWTO · NumPy
Criar Matriz NumPy Vazia
Aprenda a criar arrays NumPy vazios em Python usando numpy.zeros() e numpy.empty(). Este guia fornece exemplos claros e explicações detalhadas para cada método, ajudando você a inicializar arrays de forma eficiente para suas tarefas de manipulação de dados. Seja você iniciante ou programador experiente, encontrará informações valiosas para aprimorar suas habilidades de programação.
Nesta página
Use numpy.zeros() quando quiser que cada elemento comece com o valor 0. Use numpy.empty() quando for atribuir um valor a cada elemento antes de o ler. Apesar do nome, numpy.empty() cria o número de elementos solicitado; apenas não define os valores iniciais. O argumento shape descreve as dimensões do array: um inteiro, como 5, cria um array unidimensional, enquanto uma tupla, como (3, 4), cria três linhas e quatro colunas.
Crie um array preenchido com zeros usando numpy.zeros()
numpy.zeros() aloca um array e inicializa todos os seus elementos com o valor 0. Passe um inteiro para criar um array unidimensional ou uma tupla para criar um array com várias dimensões. Por predefinição, o NumPy usa um tipo de dados de ponto flutuante, por isso os valores apresentados podem incluir casas decimais. Passe dtype=int se quiser elementos inteiros. Escolha esta função quando for útil ter um valor inicial conhecido, por exemplo, se cálculos posteriores atualizarem apenas algumas posições e as restantes tiverem de continuar com o valor 0.
Este exemplo cria um array unidimensional e outro array bidimensional de inteiros, e depois atualiza uma posição. Apresenta os valores e a tupla devolvida pelo atributo shape do array.
Execute este exemplo:
import numpy as np
values = np.zeros(5)
matrix = np.zeros((3, 4), dtype=int)
values[2] = 7
print(values)
print(matrix.shape)
[0. 0. 7. 0. 0.]
(3, 4)
Como numpy.zeros() inicializa todas as posições, também é adequado quando pretende preencher o array gradualmente. O tipo de dados inicial é importante: um array de inteiros armazena valores inteiros, enquanto um array de ponto flutuante pode representar valores fracionários. O parâmetro shape especifica sempre as dimensões; não significa necessariamente “linhas e colunas”. Uma forma com um único valor, como 5, tem uma dimensão, e (3, 4) tem duas.
Crie um array não inicializado usando numpy.empty()
Para tipos de dados numéricos comuns, numpy.empty() cria um array com a forma solicitada, mas não inicializa os elementos; por isso, os valores iniciais são indefinidos. O tipo de dados object é diferente: por exemplo, np.empty(2, dtype=object) inicializa ambos os elementos com None. Atribua um valor válido antes de ler qualquer elemento e não dependa do conteúdo inicial de arrays numéricos.
Use esta função quando o programa puder preencher todos os elementos de imediato e, para essa carga de trabalho, for útil evitar a etapa de inicialização. A possibilidade de isso poupar tempo de forma percetível depende do tamanho do array, das atribuições seguintes, do hardware e do restante trabalho; não existe uma vantagem de velocidade universal. Se precisar de valores iniciais fiáveis ou só for atualizar algumas posições, use numpy.zeros().
O exemplo seguinte atribui um valor a todas as posições antes de ler o array. Pode alterar as dimensões ou o tipo de dados, desde que mantenha a mesma regra: escreva em todos os elementos antes de os utilizar.
import numpy as np
values = np.empty((2, 3), dtype=int)
values[:] = [[1, 2, 3], [4, 5, 6]]
print(values)
[[1 2 3]
[4 5 6]]
Para um array unidimensional, pode seguir a mesma abordagem com values = np.empty(5, dtype=int) e, em seguida, atribuir valores às cinco posições antes de qualquer leitura. Uma tupla passada como forma funciona da mesma maneira para mais dimensões. O nome numpy.empty() descreve a ausência de inicialização, não um array sem elementos; a forma e o número de elementos continuam a ser determinados pelo argumento fornecido.