La transposition d'un vecteur à l'aide de numpy
Je rencontre un problème avec Ipython - Numpy. Je veux faire l'opération suivante:
x^T.x
avec x appartenant à R^n, et x^T la transposition de l'opération sur le vecteur x. x est extrait à partir d'un fichier txt avec l'instruction:
x = np.loadtxt('myfile.txt')
Le problème est que si j'utilise la fonction de transposition
np.transpose(x)
et utilise la forme de la fonction de connaître la taille de x, j'obtiens les mêmes dimensions pour x et x^T. Numpy donne la taille avec un L majuscule indice après chacune des dimensions. par exemple,
print x.shape
print np.transpose(x).shape
(3L, 5L)
(3L, 5L)
Quelqu'un sait comment résoudre ce problème, et calculer x^T. x comme une matrice de produit?
Merci!
Personne ne sait pourquoi ce travail:
Le code utilisé par l'OP est donnée dans le réponse.
x[:,None]
Le code utilisé par l'OP est donnée dans le réponse.
OriginalL'auteur Alexandre Willame | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Comme expliqué par d'autres, la transposition ne marche pas comme vous le souhaitez pour les tableaux 1D.
Vous pouvez utiliser
np.atleast_2d
pour une approche cohérente de la définition du produit scalaire:OriginalL'auteur Nathan
Ce
np.transpose
n'est inverse la forme d'un tuple, c'est à dire vous lui donnez un tableau de la forme(m, n)
, elle retourne un tableau de la forme(n, m)
, vous lui donnez un tableau de la forme(n,)
... et il vous renvoie le même tableau avec la forme(n,)
.Ce que vous êtes implicitement attend est pour numpy pour prendre votre 1D de vecteurs d'un tableau 2D de forme
(1, n)
, qui sera transposé dans un(n, 1)
vecteur. Numpy ne sera pas le faire sur son propre, mais vous pouvez dire, c'est ce que vous voulez, par exemple:OriginalL'auteur Jaime
Pour commencer
L
signifie simplement que le type est un long int. Cela ne devrait pas être un problème. Vous devrez donner des informations supplémentaires au sujet de votre problème car je ne peux pas le reproduire avec un simple cas de test:Il est probable que quelque chose de subtil passe sur votre cas particulier qui est à l'origine des problèmes. Pouvez-vous poster le contenu du fichier que vous êtes en train de lire dans
x
?OriginalL'auteur JoshAdel
J'ai eu le même problème, j'ai utilisé numpy matrice à résoudre:
Pendant l'utilisation de numpy matrices peuvent pas être la meilleure façon de représenter vos données à partir d'un codage point de vue, il est assez bon si vous allez faire beaucoup d'opérations matricielles!
OriginalL'auteur david