Come avviare un array 2-D in Python
- Metodo di comprensione della lista per iniziare un array 2D
-
Metodo
range
per iniziare un array 2D -
Metodo
NumPy
per avviare un array 2D
Questa guida introdurrà diversi metodi per avviare un array 2-D in Python. Faremo un array 2-D 3x5
nei seguenti esempi.
Metodo di comprensione della lista per iniziare 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]]
Questo metodo di comprensione della lista nidificata crea un array 2-D con il valore iniziale 0
. Naturalmente, si può cambiare il valore iniziale con qualsiasi valore da assegnare nella propria applicazione.
Metodo range
per iniziare un array 2D
Se non ci si preoccupa del valore iniziale nell’array 2-D, il valore 0
potrebbe anche essere eliminato.
In 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]]
In Python 3.x
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]
Non si potrebbe semplicemente usare range(x)
per avviare l’array 2-D in Python 3.x perché range
restituisce un oggetto contenente una sequenza di numeri interi in Python 3.x, ma non una lista di numeri interi come in Python 2.x.
range
in Python 3.x è più simile a xrange
in Python 2.x. L’oggetto range
in Python 3.x è immutabile, quindi non si assegnano elementi ai suoi elementi.
Se si ha bisogno dell’assegnazione di elementi, è necessario convertire l’oggetto range
in oggetto 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
metodo per avviare un array 2D
Un modo pitonico per avviare un array 2-D potrebbe essere
>>> 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]]
Anche se dovremmo essere cauti quando usiamo la moltiplicazione delle liste perché crea semplicemente una sequenza con più volte riferita ad uno stesso oggetto, siamo sollevati ad usare [0]*n
qui perché l’oggetto dati 0
è immutabile in modo che non incontreremo mai problemi anche con riferimenti allo stesso oggetto immutabile.
Metodo NumPy
per avviare un array 2D
Oltre all’array Python nativo, NumPy
dovrebbe essere la migliore opzione per creare un array 2-D, o per essere più precisi, un array.
Si potrebbe creare un array piena di zeri con 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.]])
Oppure avviare un array riempita con 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.]])
Si potrebbe anche creare un nuovo array senza inizializzare le voci 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