Normaliser les lignes d'une matrice python

Donné un tableau en 2 dimensions en python, je tiens à normaliser chaque ligne avec les normes suivantes:

  • Norme 1: L_1
  • Norme 2: L_2
  • Norme Inf: L_Inf

J'ai commencé ce code:

from numpy import linalg as LA
X = np.array([[1, 2, 3, 6],
              [4, 5, 6, 5],
              [1, 2, 5, 5],
              [4, 5,10,25],
              [5, 2,10,25]])

print X.shape
x = np.array([LA.norm(v,ord=1) for v in X])
print x

De sortie:

   (5, 4)             # array dimension
   [12 20 13 44 42]   # L1 on each Row

Comment puis-je modifier le code tel que SANS l'aide de la BOUCLE, je peux avoir directement les lignes de la matrice normalisée? (Compte tenu de la norme des valeurs ci-dessus)

J'ai essayé :

 l1 = X.sum(axis=1)

 print l1
 print X/l1.reshape(5,1)

 [12 20 13 44 42]
 [[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

mais la sortie est égale à zéro.

OriginalL'auteur Yas | 2016-03-28