HOWTO · Python

Como declarar um array 3D em Python

Existem 3 métodos principais que podem ser usados para declarar um array 3D em Python: as compreensões de lista, o método de multiplicação e o pacote numpy.

Nesta página

Uma estrutura tridimensional em Python pode ser uma lista aninhada ou um ndarray do NumPy. Use compreensões de lista aninhadas para listas Python independentes, a multiplicação de listas apenas quando suas referências compartilhadas forem aceitáveis, ou o NumPy para operações numéricas com arrays.

Declarar uma lista 3D usando compreensões de lista em Python

Uma compreensão de lista aninhada constrói listas Python comuns, criando uma nova lista interna em cada nível. A sintaxe de compreensão de lista abaixo cria uma estrutura preenchida com zeros com formato 2 × 2 × 2: dois itens externos, cada um contendo duas linhas de dois valores.

Execute este exemplo:

n = 2
distance = [[[0 for k in range(n)] for j in range(n)] for i in range(n)]

print(distance)
print((len(distance), len(distance[0]), len(distance[0][0])))

Os três loops aninhados correspondem às três dimensões. Altere n ou use um tamanho diferente para cada range para construir um formato não cúbico.

Declarar uma lista 3D usando o método de multiplicação em Python

O operador * repete uma lista, mas não copia recursivamente as listas dentro dela. Na expressão abaixo, as posições repetidas fazem referência às mesmas listas internas. Atualizar uma posição pode, portanto, alterar outras posições que compartilham essa lista:

n = 2
distance = [[[0] * n] * n] * n
distance[0][0][0] = 7
print(distance)

Para listas aninhadas independentes, use uma compreensão em cada nível, como [[[0] * n for _ in range(n)] for _ in range(n)]. A multiplicação é adequada para repetir valores imutáveis ou quando as referências compartilhadas são intencionais; ela não é equivalente à compreensão para dados aninhados mutáveis.

Declarar um array 3D usando o pacote NumPy em Python

Use o NumPy quando precisar de um ndarray e de operações numéricas em seus eixos. É um pacote externo; instale-o no ambiente Python usado pelo seu projeto com pip install numpy antes de executar este exemplo. A tupla de formato indica o tamanho de cada eixo, e np.zeros preenche o array com zeros. Seu dtype padrão é float.

try:
    import numpy as np
except ImportError:
    print("NumPy is not installed in this Python environment.")
else:
    new_array = np.zeros((2, 2, 2))
    print(new_array.shape)
    print(new_array.dtype)

Os valores exibidos de um array NumPy têm formatação diferente dos de uma lista aninhada, mas tanto as dimensões quanto a inicialização com zeros são definidos pelo formato passado para np.zeros. Para zeros inteiros, passe dtype=int, por exemplo np.zeros((2, 2, 2), dtype=int). Veja a visão geral do NumPy e a referência de np.zeros para mais detalhes.