Produit scalaire de chaque élément avec tout autre élément d'un tableau
-
12-10-2019 - |
Question
Y at-il un moyen facile de prendre le produit scalaire d'un élément d'un tableau avec tous les autres? Donc, étant donné:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Je voudrais obtenir le résultat:
array([ 32., 50., 122.])
i.e.. a [0] point a [1], a [0] point a [2], a [1] point a [2].
Le réseau Je travaille avec ne seront carrés; c'est juste un exemple.
Merci!
La solution
>>> X = scipy.matrix('1 2 3; 4 5 6; 7 8 9')
>>> X*X.T
matrix([[ 14, 32, 50],
[ 32, 77, 122],
[ 50, 122, 194]])
Il vous donne plus que ce que vous vouliez, mais il est indéniablement facile.
ou
>>> X = scipy.array([[1,2,3], [4,5,6], [7,8,9]])
>>> scipy.dot(X, X.T)
array([[ 14, 32, 50],
[ 32, 77, 122],
[ 50, 122, 194]])
Autres conseils
Comme il semble que vous utilisez numpy:
from itertools import combinations
import numpy as np
dot_products = [np.dot(*v) for v in combinations(vectors, 2)]
J'ai vérifié cela et il semble fonctionner sur mon python installer.
Voici un autre:
>>> a = numpy.array([[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]])
>>> numpy.array([numpy.dot(a[i], a[j]) for i in range(len(a)) for j in range(i + 1, len(a))])
array([ 32, 50, 122])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow