Dans NumPy, un Un tableau à une dimension peut être représenté de deux manières : sous forme d'une forme (R, 1) (une liste de nombres) ou sous forme d'une forme (R,) (un liste des listes). Ces deux formes représentent les mêmes données sous-jacentes, mais elles ont des implications différentes pour la multiplication matricielle.
Lorsque vous multipliez deux matrices, leurs formes doivent être compatibles. Si une matrice a une forme (R, 1) et l'autre matrice a une forme (R,), NumPy générera une erreur car les formes ne sont pas alignées. En effet, (R, 1) est une forme bidimensionnelle, tandis que (R,) est une forme unidimensionnelle.
Pour corriger cette erreur, vous pouvez remodeler explicitement l'une des matrices. Par exemple :
import numpy as np M = np.array([[1, 2, 3], [4, 5, 6]]) ones = np.ones((M.shape[0], 1)) result = np.dot(M[:,0].reshape((M.shape[0], 1)), ones)
Dans cet exemple, nous remodelons la première colonne de M (une forme (R,)) en une forme (R, 1) en utilisant la méthode reshape(). Cela rend les formes des deux matrices compatibles et la multiplication peut être effectuée avec succès.
Oui, il existe de meilleures façons de réaliser l'exemple ci-dessus sans le remodeler explicitement. Une solution consiste à utiliser la méthode sum() avec l’argument axis. Par exemple :
import numpy as np M = np.array([[1, 2, 3], [4, 5, 6]]) ones = np.ones((M.shape[0], 1)) result = np.dot(M[:,0], ones) + M[:,1:]
Dans cet exemple, nous utilisons la méthode sum() pour additionner la première colonne de M avec les colonnes restantes. Cela nous donne une matrice avec la même forme que M. Nous pouvons alors effectuer la multiplication sans aucune erreur.
Une autre façon de réaliser l'exemple ci-dessus sans remodeler explicitement est d'utiliser la fonction Broadcast(). Par exemple :
import numpy as np M = np.array([[1, 2, 3], [4, 5, 6]]) ones = np.ones((M.shape[0], 1)) result = np.dot( np.broadcast_to(M[:,0], M.shape), ones)
Dans cet exemple, nous utilisons la fonction Broadcast() pour diffuser la première colonne de M à la forme de M. Cela rend les formes des deux matrices compatibles, et la multiplication peut être exécuté avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!