Skip to content

NumPy : Créer un ndarray dont tous les éléments sont initialisés avec la même valeur

Cet article décrit comment créer un tableau NumPy ndarray avec tous les éléments initialisés avec la même valeur (0, 1, valeur donnée).

Spécifiez la forme (nombre de lignes, de colonnes, etc.) et le dtype.

  • numpy.zeros (): Initialiser avec 0
  • numpy.ones() : Initialiser avec 1
  • numpy.full() : initialiser avec une valeur donnée

Créez avec la même forme et le même type que le tableau existant. Il est également possible de spécifier un dtype différent.

  • numpy.zeros_like() : Initialiser avec 0
  • numpy.ones_like() : Initialiser avec 1
  • numpy.full_like() : initialiser avec une valeur donnée

Comme décrit à la fin, au lieu de créer un nouveau tableau, vous pouvez également remplacer tous les éléments d’un tableau existant par une valeur donnée.

Consultez l’article suivant pour savoir comment créer un tableau vide.

Vous pouvez également mosaïquer le tableau ndarray d’origine pour créer un nouveau ndarray.

Consultez l’article suivant pour savoir comment initialiser la liste intégrée.

numpy.zeros (): Initialiser avec 0

Utilisez numpy.zeros() pour créer un tableau ndarray avec tous les éléments remplis de 0.

Spécifiez la forme du tableau à créer. Dans le cas d’une valeur scalaire, un tableau unidimensionnel est généré, et dans le cas d’un tuple ou d’une liste, un tableau multidimensionnel est généré.

import numpy as np

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

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

Par défaut, dtype est float64. Vous pouvez également le spécifier avec l’argument 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

Consultez l’article suivant pour plus d’informations sur le type de données dtype dans NumPy.

numpy.ones() : Initialiser avec 1

Utilisez numpy.ones() pour créer un tableau ndarray avec tous les éléments remplis avec 1.

L’utilisation est la même que 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() : initialiser avec une valeur donnée

Utilisez numpy.full() pour créer un tableau ndarray avec tous les éléments remplis avec une valeur donnée au lieu de 0 ou 1.

Spécifiez la forme du tableau à générer comme premier argument shape et la valeur de remplissage comme second argument fill_value.

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]]

Le dtype est défini en fonction de fill_value. Par exemple, int64 pour fill_value=100 et float64 pour 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

Vous pouvez également spécifier un type avec l’argument dtype. Il est initialisé avec la valeur castée.

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

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

numpy.zeros_like() : Initialiser avec 0

Créez le tableau d’origine ndarray. Par exemple, préparez un tableau de type int et un tableau de type 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]]

Utilisez numpy.zeros_like() pour créer un tableau ndarray avec tous les éléments remplis de 0.

Spécifiez le tableau d’origine comme premier argument.

Un tableau ndarray avec la même forme et le même dtype que le tableau spécifié est créé.

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

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

Vous pouvez également spécifier le type avec l’argument dtype.

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

numpy.ones_like() : Initialiser avec 1

Utilisez numpy.ones_like() pour créer un tableau ndarray avec tous les éléments remplis de 0.

L’utilisation est la même que 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() : initialiser avec une valeur donnée

Utilisez numpy.full_like() pour créer un tableau ndarray avec tous les éléments remplis avec une valeur donnée au lieu de 0 ou 1.

Spécifiez la forme du tableau à générer comme premier argument shape et la valeur de remplissage comme second argument fill_value. Le dtype du tableau créé est le même que le dtype du tableau d’origine.

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.]]

Notez que même si fill_value est float, il est converti en int si le dtype du tableau d’origine est 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]]

Vous pouvez également spécifier le type avec l’argument dtype.

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

Remplacer tous les éléments d’un tableau existant par une valeur donnée

zeros_like(), ones_like() et full_like() créent un nouveau tableau basé sur un tableau existant. Le tableau d’origine n’est pas modifié.

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]]

Si vous souhaitez remplacer tous les éléments d’un tableau existant par des valeurs données, utilisez slice pour attribuer de nouvelles valeurs à tous les éléments.

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

Puisque le , : à la fin peut être omis, tous les éléments peuvent être sélectionnés et assignés avec [:] quel que soit le nombre de dimensions.

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

Notez que si le type du tableau ne correspond pas au type de la valeur à affecter, des résultats inattendus peuvent se produire. Il est nécessaire de changer le type du tableau avec astype() avant l’affectation.

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]]