Multiplication matricielle avec numpy

C'est pas très clair tout ça, encore moins en anglais

a marqué ce sujet comme résolu.

Je dois définitivement pas avoir la même version de numpy que vous. Je vais écrire le code tel qu'il devrait être et puis tant pis xD. C'est pour mettre dans un dossier donc tant pis.

Sinon pour la PEP, j'avoue que c'est quand même plus simple la deuxième écriture ^^

Merci quand même :)

Le truc est que prendre la transposé d'un array 1D n'a pas spécialement de sens. Il faut forcément passer en 2D pour que la transposé se déroule correctement et donc ensuite que la multiplication se passe.

Au passage la classe Matric a été cité, c'est généralement une très mauvaise idée. Son principal rôle est de changer le comportement par défaut de l'opérateur * et de le changer d'un produit élément à élément à une multiplication matricielle. Le problème est que la très grande majorité des codes supposent qu'ils reçoivent une array et n'utilisent pas asarray en entrée pour s'en assurer. Utiliser la classe Matrix s'est un plantage assuré dans bien des cas pour peu d'avantages.

Son problème ne vient pas du produit en réalité. Il utilisait bien la bonne fonction pour ça (dot). Son soucis vient du fait qu'il veut un produit matriciel mais présentait deux vecteurs 1D en entrée (ce qui réalisait le produit scalaire des deux vecteurs). La raison est que la transposé, sous numpy, ne fonctionne pas sur les vecteurs 1D (de façon logique). Il faut que le vecteur soit explicitement en 2D pour que la transposé fonctionne.

Banni

Le truc est que prendre la transposé d'un array 1D n'a pas spécialement de sens. Il faut forcément passer en 2D pour que la transposé se déroule correctement et donc ensuite que la multiplication se passe.

C'était pas du code, c'était juste pour préciser ce que Ricocotam voulait.

En fait, dans ce programme, j'implémente un algo papier. Dans mon algo je manipule des objets mathématiques (vecteurs lignes et matrices $n \times p$). Donc la transposée d'un vecteur ligne a un sens. En plus j'ai déjà fait ce genre de chose sur Scilab et Octave en utilisant la transposée. D'où mon incompréhension

Oui je comprend mais si justement ça doit être interpréter comme des vecteurs lignes ou colonnes (comme ici quand tu veux prendre la transposé) il faut que tu les exprime dans cet espace. La transposé n'a de sens que si il y a plusieurs dimensions. L'opération ne sera par exemple pas forcément la même si tu es dans un espace de degré 3 .

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte