Cómo iniciar un array 2-D en Python
- Método de comprensión de listas para iniciar un array 2D
-
Método de
rang
anidado para iniciar un array 2D -
Método
NumPy
para iniciar un array 2D
Esta guía tutorial introducirá diferentes métodos para iniciar un array 2-D en Python. En los siguientes ejemplos haremos un array de 2-D 3x5
.
Método de comprensión de listas para iniciar un 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 comprensión de listas anidadas crea un array 2-D con el valor inicial de 0
. Por supuesto, puede cambiar el valor inicial a cualquier valor que necesite asignar en su aplicación.
Método de rang
anidado para iniciar un array 2D
Si no te importa el valor inicial en el array 2-D, el valor 0
podría incluso ser eliminado.
En 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]]
En Python 3.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]
No podríamos usar simplemente range(x)
para iniciar un array 2-D en Python 3.x porque range
devuelve un objeto que contiene una secuencia de números enteros en Python 3.x, pero no una lista de números enteros como en Python 2.x.
range
en Python 3.x es más similar a xrange
en Python 2.x. El objeto range
en Python 3.x es inmutable, por lo tanto, no asignas ítems a sus elementos.
Si necesitas asignar elementos, necesitas convertir el objeto range
a 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] * N
método para iniciar un array 2D
Una forma pythonica de iniciar un array 2-D podría 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]]
Aunque debemos ser cautelosos cuando usamos la multiplicación de listas porque simplemente crea una secuencia con múltiples veces referidas a un mismo objeto, nos sentimos aliviados de usar [0]*n
aquí porque el objeto de datos 0
es inmutable, de modo que nunca tendremos problemas incluso con referencias al mismo objeto inmutable.
Método NumPy
para iniciar un array 2D
Además del array nativa de Python, NumPy
debería ser la mejor opción para crear un array de 2 dimensiones, o para ser más precisos, un array.
Podrías crear un array llena de ceros con numpy.ceros
.
>>> 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.]])
O iniciar un array llena de ones
con 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.]])
Incluso puede crear un nuevo array sin inicializar las entradas con 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