Pour créer et initialiser une matrice en python il existe plusieurs solutions avec le module numpy, quelques exemples:
Table des matières
- Créer une simple matrice
- Créer une matrice avec des zeros
- Créer une matrice avec des 1
- Créer une matrice à partir d'une séquence de nombres (arange)
- Créer une matrice à partir d'une séquence de nombres (linspace)
- Créer une matrice avec des entiers aléatoires
- Créer une matrice avec des nombres réels aléatoires
- Créer une matrice avec des chaînes de caractères
- Créer une matrice unité
- Références
Créer une simple matrice
Créer une matrice 1D contenant 9 éléments:
\begin{equation}
A = \left( \begin{array}{ccc}
1&7& 3& 7& 3& 6& 4& 9& 5
\end{array}\right)
\end{equation}
>>> import numpy as np
>>> A = np.array([1,7,3,7,3,6,4,9,5])
>>> A
array([1, 7, 3, 7, 3, 6, 4, 9, 5])
Astuce: si on vérifie la forme ('shape') de la matrice ici on obtient (9,) et pas (9,1):
>>> A.shape
(9,)
cela peut entrainer des erreurs par la suite si on veut par exemple concatener deux matrices. Pour ajouter un axe et avoir une matrice de dimension (9,1), on peut alors faire comme ceci (ref):
>>> A = A[:, np.newaxis]
>>> A
array([[1],
[7],
[3],
[7],
[3],
[6],
[4],
[9],
[5]])
>>> A.shape
(9, 1)
Créer une matrice de dimension (3,3)
\begin{equation}
A = \left( \begin{array}{ccc}
4 & 7 & 6\\
1 & 2 & 5\\
9 & 3 & 8
\end{array}\right)
\end{equation}
avec numpy
>>> A = np.array([[4,7,6],[1,2,5],[9,3,8]])
>>> A
array([[4, 7, 6],
[1, 2, 5],
[9, 3, 8]])
>>> A.shape
(3, 3)
Autre exemple avec une matrice de dimension (3,3,2)
>>> A = np.array([[[4,1],[7,1],[6,1]],[[1,1],[2,1],[5,1]],[[9,1],[3,1],[8,1]]])
>>> A
array([[[4, 1],
[7, 1],
[6, 1]],
[[1, 1],
[2, 1],
[5, 1]],
[[9, 1],
[3, 1],
[8, 1]]])
>>> A.shape
(3, 3, 2)
Créer une matrice avec des zeros
Pour créer une matrice avec des zeros on peut utiliser la fonction numpy zeros
\begin{equation}
A = \left( \begin{array}{ccc}
0&0& 0& 0& 0& 0& 0& 0& 0&0
\end{array}\right)
\end{equation}
>>> A = np.zeros((10))
>>> A
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> A.shape
(10,)
Autre exemple
\begin{equation}
A = \left( \begin{array}{ccc}
0 & 0 & 0\\
0 & 0 & 0\\
0 & 0 & 0
\end{array}\right)
\end{equation}
>>> A = np.zeros((3,3))
>>> A
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> A.shape
(3, 3)
Créer une matrice avec des 1
Pour créer une matrice avec des 1 on peut utiliser la fonction numpy ones
\begin{equation}
A = \left( \begin{array}{ccc}
1&1& 1& 1& 1& 1& 1& 1& 1&1
\end{array}\right)
\end{equation}
>>> A = np.ones((10))
>>> A
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
>>> A.shape
(10,)
Autre exemple
\begin{equation}
A = \left( \begin{array}{ccc}
1 & 1 & 1\\
1 & 1 & 1\\
1 & 1 & 1
\end{array}\right)
\end{equation}
>>> A = np.ones((3,3))
>>> A
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> A.shape
(3, 3)
Créer une matrice à partir d'une séquence de nombres (arange)
Pour créer une matrice à partir d'une suite de nombre entre 1 et 10 par exemple on peut utiliser la fonction numpy arange
\begin{equation}
A = \left( \begin{array}{ccc}
1&2& 3& 4& 5& 6& 7& 8& 9
\end{array}\right)
\end{equation}
>>> A = np.arange(1,10)
>>> A
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
Autre exemple an précisant un pas de 2:
\begin{equation}
A = \left( \begin{array}{ccc}
1&3& 5& 7& 9
\end{array}\right)
\end{equation}
>>> A = np.arange(1,10,2)
>>> A
array([1, 3, 5, 7, 9])
Autre exemple
\begin{equation}
A = \left( \begin{array}{ccc}
1&6& 11& 16
\end{array}\right)
\end{equation}
>>> A = np.arange(1,20,5)
>>> A
array([ 1, 6, 11, 16])
>>> A.shape
(4,)
On peut ensuite redimensionner la matrice avec reshape:
>>> A = A.reshape(2,2)
>>> A
array([[ 1, 6],
[11, 16]])
>>> A.shape
(2, 2)
\begin{equation}
A = \left( \begin{array}{ccc}
1 & 6 \\
11 & 16
\end{array}\right)
\end{equation}
Créer une matrice à partir d'une séquence de nombres (linspace)
Si on veut créer par exemple 20 nombres entre [1,10[ on peut utiliser la fonction numpy linspace
>>> A = np.linspace(1,10,20)
>>> A
array([ 1. , 1.47368421, 1.94736842, 2.42105263,
2.89473684, 3.36842105, 3.84210526, 4.31578947,
4.78947368, 5.26315789, 5.73684211, 6.21052632,
6.68421053, 7.15789474, 7.63157895, 8.10526316,
8.57894737, 9.05263158, 9.52631579, 10. ])
>>> A.shape
(20,)
Créer une matrice avec des entiers aléatoires
Pour créer une matrice avec des entiers aléatoires on peut utiliser la fonction numpy randint. Exemple avec une matrice de dimension 10 des entiers entre [0,10[
>>> A = np.random.randint(10, size=10)
>>> A
array([9, 5, 0, 2, 0, 6, 6, 6, 5, 5])
>>> A.shape
(10,)
Exemple avec une matrice de dimension (3,3) des entiers entre [0,10[
>>> A = np.random.randint(10, size=(3,3))
>>> A
array([[2, 4, 7],
[7, 5, 4],
[0, 9, 4]])
>>> A.shape
(3, 3)
Exemple avec une matrice de dimension (3,3) des entiers entre [0,100[
>>> A = np.random.randint(100, size=(3,3))
>>> A
array([[83, 51, 95],
[74, 7, 70],
[49, 18, 8]])
Créer une matrice avec des nombres réels aléatoires
>>> A = A * 0.01
>>> A
array([[ 0.83, 0.51, 0.95],
[ 0.74, 0.07, 0.7 ],
[ 0.49, 0.18, 0.08]])
>>> type(A)
<class 'numpy.ndarray'>
>>> A.dtype
dtype('float64')
Créer une matrice avec des chaînes de caractères
Exemple de comment créer une matrice avec des chaînes de caractères
>>> A = np.array(('Hello','Hola','Bonjour'))
>>> A
array(['Hello', 'Hola', 'Bonjour'],
dtype='<U7')
>>> A.dtype
dtype('<U7')
Note: attention ici la taille maximum des éléments de la matrice A est 7 car l'élément le plus grand est 'bonjour' avec len('Bonjour') = 7. Si on veut modifier un élément de la matrice avec une chaîne de caractères de taille > 7
>>> A[0] = 'How are you ?'
>>> A
array(['How are', 'Hola', 'Bonjour'],
dtype='<U7')
il sera tronqué. Il faut alors changer le type, exemple:
>>> A = A.astype('<U20')
>>> A[0] = 'How are you ?'
>>> A
array(['How are you ?', 'Hola', 'Bonjour'], dtype='<U20')
Créer une matrice unité
Pour créer une matrice unité il y a la fonction numpy identity:
\begin{equation}
I = \left( \begin{array}{ccc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array}\right)
\end{equation}
Exemple
>>> import numpy as np
>>> I = np.identity(3)
>>> I
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
Références
Liens | Site |
---|---|
numpy.chararray | scipy doc |
numpy.random.randint | docs.scipy |
numpy.arange | docs.scipy |
numpy.random.choice | docs.scipy |
numpy.empty | docs.scipy |
numpy.linspace | docs.scipy |
initialize a numpy array | stackoverflow |
How do I create character arrays in numpy? | stackoverflow |
How can I add new dimensions to a Numpy array? | stackoverflow |
numpy.identity | numpy doc |