Skip to content

NumPy: Creare un ndarray con tutti gli elementi inizializzati con lo stesso valore

Python

In questo articolo viene descritto come creare una matrice NumPy ndarray con tutti gli elementi inizializzati con lo stesso valore (0, 1, valore specificato).

Specificare la forma (numero di righe, colonne, ecc.) e dtype.

  • numpy.zeros(): inizializza con 0
  • numpy.ones(): inizializza con 1
  • numpy.full(): inizializza con un dato valore

Crea con la stessa forma e dtype dell’array esistente. È anche possibile specificare un diverso dtype.

  • numpy.zeros_like(): inizializza con 0
  • numpy.ones_like(): Inizializza con 1
  • numpy.full_like(): inizializza con un dato valore

Come definire alla fine, invece di creare un nuovo array, puoi anche sostituire tutti gli elementi di un array esistente con un determinato valore.

Vedere il seguente articolo su come creare una matrice vuota.

Puoi anche affiancare l’array originale ndarray per creare un nuovo ndarray.

Vedere l’articolo seguente su come inizializzare l’elenco predefinito.

numpy.zeros(): inizializza con 0

Usa numpy.zeros() per creare un array ndarray con tutti gli elementi riempiti con 0.

Specificare la forma della matrice da creare. Nel caso di un valore scalare, viene generato un array unidimensionale e, nel caso di una tupla o di un elenco, viene generato un array multidimensionale.

import numpy as np

print(np.zeros(3))
# [ 0.  0.  0.]

print(np.zeros((2, 3)))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

Per configurazione predefinita, dtype è float64. Puoi anche specificarlo con l’argomento dtype.

print(np.zeros(3).dtype)
# float64

print(np.zeros(3, dtype=np.int))
# [0 0 0]

print(np.zeros(3, dtype=np.int).dtype)
# int64

Per ulteriori informazioni sul tipo di dati dtype in NumPy, vedere l’articolo seguente.

numpy.ones(): inizializza con 1

Usa numpy.ones() per creare un array ndarray con tutti gli elementi riempiti con 1.

L’utilizzo è lo stesso di numpy.zeros().

print(np.ones(3))
# [ 1.  1.  1.]

print(np.ones((2, 3)))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

print(np.ones(3).dtype)
# float64

print(np.ones(3, dtype=np.int))
# [1 1 1]

print(np.ones(3, dtype=np.int).dtype)
# int64

numpy.full(): inizializza con un dato valore

Usa numpy.full() per creare un array ndarray con tutti gli elementi riempiti con un dato valore invece di 0 o 1.

Specificare la forma della matrice da generare come prima forma di argomento e il valore di riempimento come secondo valore di riempimento.

print(np.full(3, 100))
# [100 100 100]

print(np.full(3, np.pi))
# [ 3.14159265  3.14159265  3.14159265]

print(np.full((2, 3), 100))
# [[100 100 100]
#  [100 100 100]]

print(np.full((2, 3), np.pi))
# [[ 3.14159265  3.14159265  3.14159265]
#  [ 3.14159265  3.14159265  3.14159265]]

Il dtype è impostato in base a fill_value. Ad esempio, int64 per fill_value=100 e float64 per fill_value=100.0.

print(np.full(3, 100).dtype)
# int64

print(np.full(3, 100.0).dtype)
# float64

print(np.full(3, np.pi).dtype)
# float64

Puoi anche specificare un tipo con l’argomento. Viene inizializzato con il valore cast.

print(np.full(3, 100, dtype=float))
# [ 100.  100.  100.]

print(np.full(3, np.pi, dtype=int))
# [3 3 3]

numpy.zeros_like(): inizializza con 0

Crea l’array originale ndarray. Ad esempio, prepara una matrice di tipo int e una matrice di tipo float.

import numpy as np

a_int = np.arange(6).reshape((2,3))
print(a_int)
# [[0 1 2]
#  [3 4 5]]

a_float = np.arange(6).reshape((2,3)) / 10
print(a_float)
# [[ 0.   0.1  0.2]
#  [ 0.3  0.4  0.5]]

Usa numpy.zeros_like() per creare un array ndarray con tutti gli elementi riempiti con 0.

Specificare l’array originale come primo argomento.

Viene creato un array ndarray con la stessa forma e dtype dell’array specificato.

print(np.zeros_like(a_int))
# [[0 0 0]
#  [0 0 0]]

print(np.zeros_like(a_float))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

Puoi anche specificare il tipo con l’argomento.

print(np.zeros_like(a_int, dtype=np.float))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

numpy.ones_like(): Inizializza con 1

Usa numpy.ones_like() per creare un array ndarray con tutti gli elementi riempiti con 0.

L’utilizzo è lo stesso di numpy.zeros_like().

print(np.ones_like(a_int))
# [[1 1 1]
#  [1 1 1]]

print(np.ones_like(a_float))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

print(np.ones_like(a_int, dtype=np.float))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

numpy.full_like(): inizializza con un dato valore

Usa numpy.full_like() per creare un array ndarray con tutti gli elementi riempiti con un dato valore invece di 0 o 1.

Specificare la forma della matrice da generare come prima forma di argomento e il valore di riempimento come secondo valore di riempimento. Il dtype dell’array creato è lo stesso del dtype dell’array originale.

print(np.full_like(a_int, 100))
# [[100 100 100]
#  [100 100 100]]

print(np.full_like(a_float, 100))
# [[ 100.  100.  100.]
#  [ 100.  100.  100.]]

Si noti che anche se fill_value è float, viene eseguito il cast su int se il dtype dell’array originale è int.

print(np.full_like(a_int, 0.123))
# [[0 0 0]
#  [0 0 0]]

print(np.full_like(a_float, 0.123))
# [[ 0.123  0.123  0.123]
#  [ 0.123  0.123  0.123]]

Puoi anche specificare il tipo con l’argomento.

print(np.full_like(a_int, 0.123, dtype=np.float))
# [[ 0.123  0.123  0.123]
#  [ 0.123  0.123  0.123]]

Sostituisci tutti gli elementi di una matrice esistente con un determinato valore

zeros_like(), one_like() e full_like() creano un nuovo array basato su un array esistente. L’array originale non viene modificato.

a = np.arange(6).reshape(2, 3)
print(a)
# [[0 1 2]
#  [3 4 5]]

b = np.zeros_like(a)
print(b)
# [[0 0 0]
#  [0 0 0]]

print(a)
# [[0 1 2]
#  [3 4 5]]

Se vuoi tutti gli elementi di un array esistente con valori dati, usa slice per nuovi valori a tutti gli elementi.

a[:, :] = 0
print(a)
# [[0 0 0]
#  [0 0 0]]

Poiché , , può essere omesso, tutti gli elementi possono essere assegnati e assegnati con [:] in tutti gli elementi selezionati dal numero di dimensioni.

a[:] = 1
print(a)
# [[1 1 1]
#  [1 1 1]]

Si noti che se il tipo della matrice non corrisponde al tipo del valore da arrivare, potrebbe risultare risultati imprevisti. È necessario modificare il tipo dell’array con astype() prima dell’assegnazione.

a[:] = 0.1
print(a)
# [[0 0 0]
#  [0 0 0]]

a = a.astype(np.float)
a[:] = 0.1
print(a)
# [[0.1 0.1 0.1]
#  [0.1 0.1 0.1]]