Como iniciar a array 2-D em Python
- Método de compreensão de lista para iniciar um array 2D
-
Método de
range
aninhado para iniciar um array 2D -
Método
NumPy
para iniciar um array 2D
Este guia tutorial irá introduzir diferentes métodos para iniciar um array 2-D em Python. Vamos fazer um array 3x5
2-D nos seguintes exemplos.
Método de compreensão de lista para iniciar um array 2D
>>> column, row = 3, 5
>>> array2D = [[0 for _ in range(row)] for _ in range(column)]
>>> array2D
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Este método de compreensão de lista aninhada cria um array 2-D com o valor inicial como 0
. Claro, você pode alterar o valor inicial para qualquer valor que você precise atribuir em sua aplicação.
Método de range
aninhado para iniciar um array 2D
Se você não se importa com o valor inicial no array 2-D, o valor 0
pode até ser eliminado.
Em Python 2.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
Em Python 3.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]
Nós não poderíamos simplesmente utilizar range(x)
para iniciar o array 2-D em Python 3.x porque range
retorna um objeto contendo uma seqüência de inteiros em Python 3.x, mas não uma lista de inteiros como em Python 2.x.
range
em Python 3.x é mais similar ao xrange
em Python 2.x. O objeto range
em Python 3.x é imutável, portanto, você não atribui itens aos seus elementos.
Se você precisa de atribuição de itens, você precisa converter o objeto range
para o objeto list
.
>>> A = [list(range(row)) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
[0] * método n
para iniciar um array 2D
Uma forma pitônica de iniciar um array 2-D poderia ser
>>> column, row = 3, 5
>>> A = [[0]*row for _ in range(column)]
>>> A
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
Embora devamos ser cautelosos quando usamos multiplicação de lista porque ela simplesmente cria uma seqüência com múltiplas referências a um mesmo objeto, estamos aliviados em usar [0]*n
aqui porque o objeto de dados 0
é imutável para que nunca encontremos problemas mesmo com referências ao mesmo objeto imutável.
Método NumPy
para iniciar um array 2D
Além da array nativa Python, NumPy
deve ser a melhor opção para criar uma array 2D, ou para ser mais preciso, uma array.
Você poderia criar uma array cheia de zeros com numpy.zeros
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.zeros(column, row)
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
Ou iniciar uma array preenchida com ones
com numpy.ones
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.ones((column, row))
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
Você poderia até criar um novo array sem inicializar as entradas com numpy.empty
.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.empty((5,5))
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306,
1.33511562e-306, 1.89146896e-307],
[7.56571288e-307, 3.11525958e-307, 1.24610723e-306,
1.37962320e-306, 1.29060871e-306],
[2.22518251e-306, 1.33511969e-306, 1.78022342e-306,
1.05700345e-307, 1.11261027e-306],
[1.11261502e-306, 1.42410839e-306, 7.56597770e-307,
6.23059726e-307, 1.42419530e-306],
[7.56599128e-307, 1.78022206e-306, 8.34451503e-308,
2.22507386e-306, 7.20705877e+159]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook