Nov 21, 2024

Wiki

Python

Aide

edit SideBar

Search

Operations


Conversion matrix <-> array

On peut bien sûr utiliser les constructeurs :

  >>> from numpy import *
  >>> aa=array([ [1, 2, 3] ])
  >>> aa
  array([ [1, 2, 3] ])

  >>> bb=matrix(aa)
  >>> bb
  matrix([ [1, 2, 3] ])

On peut aussi utiliser asarray et asmatrix :

  >>> bb=asarray(bb)
  >>> bb
  array([ [1, 2, 3] ])

  >>> aa=asmatrix(aa)
  >>> aa
  matrix([ [1, 2, 3] ])

L'avantage de cette dernière méthode est qu'il n'y a pas de copie : c'est le même objet sous-jacent qui est utilisé, avec une vue différente. Procéder ainsi peut faire gagner du temps.

Indexation, tranchage et itération

Comme pour les listes en Python, les matrices (array) peuvent être indéxées, tranchées et itérées :

  >>> from numpy import *
  >>> a=array([10,20,30,40])
  >>> a[2:4] = -7,-3
  >>> for i in a:
  ...     print i
  ...
  10
  20
  -7
  -3

Somme

On peut calculer la somme (terme à terme) de deux array :

  >>> a
  array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
  >>> print a + a
  [[ 0  2  4  6  8]
   [10 12 14 16 18]]

Redimensionnement

On redimensionne une matrice en modifiant l'attribut shape :

  >>> y = arange(12)
  >>> y
  array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
  >>> y.shape = 3,4
  >>> y
  array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

Taille et opérations

On peut réaliser des opérations avec des matrices n'ayant pas la même taille :

  >>> y = arange(12)
  >>> y
  array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

  >>> y.shape = 3,4 
  >>> y
  array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

  >>> a=array([10,20,30,40])
  >>> 3*a
  array([ 30,  60,  90, 120])

On peut alors sommer a et y, qui n'ont pas la même taille : la somme se fera ici par ligne

  >>> a+y
  array([[10, 21, 32, 43],
       [14, 25, 36, 47],
       [18, 29, 40, 51]])

Extraire une partie triangulaire

Considérons la matrice suivante :

  >>> aa = matrix([ [1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16] ]) 
  >>> aa
  matrix([ [ 1,  2,  3,  4],
          [ 5,  6,  7,  8],
          [ 9, 10, 11, 12],
          [13, 14, 15, 16] ])

Partie triangulaire inférieure

On peut extraire sa partie triangulaire inférieure de la manière suivante :

  >>> tril(aa)
  matrix([[ 1,  0,  0,  0],
          [ 5,  6,  0,  0],
          [ 9, 10, 11,  0],
          [13, 14, 15, 16]])

On peut demander plus ou moins de diagonales :

  >>> tril(aa,-1)
  matrix([[ 0,  0,  0,  0],
          [ 5,  0,  0,  0],
          [ 9, 10,  0,  0],
          [13, 14, 15,  0]])

  >>> tril(aa,1)
  matrix([[ 1,  2,  0,  0],
          [ 5,  6,  7,  0],
          [ 9, 10, 11, 12],
          [13, 14, 15, 16]])

Partie triangulaire supérieure

On retrouve la même chose concernant la partie triangulaire supérieure :

  >>> triu(aa,1)
  matrix([[ 0,  2,  3,  4],
          [ 0,  0,  7,  8],
          [ 0,  0,  0, 12],
          [ 0,  0,  0,  0]])

  >>> triu(aa,-1)
  matrix([[ 1,  2,  3,  4],
          [ 5,  6,  7,  8],
          [ 0, 10, 11, 12],
          [ 0,  0, 15, 16]])

Page Actions

Recent Changes

Group & Page

Back Links