2 votes

multiplication de matrices de manière personnalisée

J'ai un tableau de la taille (3,) :

a = [1,2,3]

et un autre tableau de la taille (3,3) :

b = [[1,2,3],[4,5,6],[7,8,9]]

Je cherche un moyen vectoriel de multiplier les a**2 (a^2) à b de manière à :

> a**2=[1,4,9]

multiplie ce 1 par la ligne entière 1 de la matrice b 4 à la deuxième ligne de la matrice b et 9 à la ligne entière de la matrice b.

mon résultat final doit être le suivant :

> (a**2)*b = [[1,2,3],[16,20,24],[63,72,81]]

Gracias.

1voto

aminrd Points 2329

Tout d'abord, vous devez convertir vos tableaux en numpy les tableaux :

import numpy as np
a = [1,2,3]
b = [[1,2,3],[4,5,6],[7,8,9]]
a, b = np.array(a), np.array(b)

Vous pouvez utiliser :

(a**2)[:, None] * b

Sortie :

array([[ 1,  2,  3],
       [16, 20, 24],
       [63, 72, 81]])

0voto

Ali_Sh Points 387

Vous devez d'abord faire a (1D : (3, )) et b (2D : (3, 3)) sont identiques en termes de dimensions. Ainsi, il est nécessaire d'ajouter une dimension à a ce qui peut être fait par l'une des méthodes suivantes :

a = a[:, None]                    # way 1
a = a[:, np.newaxis]              # way 2
a = np.expand_dims(a, axis=1)     # way 3

et ensuite faire vos calculs dessus comme :

formula = a ** 2 * b

Note : comme cela est bien expliqué dans les commentaires de cette réponse , Il est recommandé d'utiliser la voie 2 ou la voie 3 au lieu de la voie 1. .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X