Ceci est mon objectif, en utilisant Python Numpy:Python, ce qui crée une matrice de grande dimension des produits de point 3 dimensions
Je voudrais créer un (1000,1000) matrice bidimensionnelle/matrice de valeurs de produit scalaire. Cela signifie que chaque réseau d'entrée/de la matrice est le produit scalaire de vecteurs de 1 à 1000. la construction de cette théorie est simple: on définit un (1,1000) matrice dimensionnelle des vecteurs V1, V2, ..., v1000
import numpy as np
vectorvalue = np.matrix([v1, v2, v3, ..., v1000])
et prend le produit scalaire avec le transposer, à savoir
matrix_of_dotproducts = np.tensordot(vectorvalue.T, vectorvalue)
et la forme de la matrice/matrice sera (1000, 1000). L'entrée (1,1) sera le produit scalaire des vecteurs (v1, v1), l'entrée (1,2) sera le produit scalaire des vecteurs (v1, v2), etc. Pour calculer le produit scalaire avec numpy pour un vecteur en trois dimensions, il est sage d'utiliser numpy.tensordot()
au lieu de numpy.dot()
Voici mon problème: Je ne commence pas par un tableau de valeurs vectorielles. Je commence par trois tableaux de 1000 éléments de chaque valeur de coordonnées, c'est-à-dire un tableau de coordonnées x, de coordonnées y et de coordonnées z.
xvalues = np.array([x1, x2, x3, ..., x1000])
yvalues = np.array([y1, y2, y3, ..., y1000])
zvalues = np.array([z1, z2, z3, ..., z1000])
est la meilleure chose à faire pour construire un (3, 1000) tableau numpy/matrice, puis prendre le produit scalaire tenseur pour chaque paire?
v1 = np.array([x1,y1,z1])
v2 = np.array([x2,y2,z2])
...
Je suis sûr qu'il ya une façon plus traitable et efficace de le faire ...
PS: Pour être clair, je voudrais prendre un produit scalaire 3D. Autrement dit, pour les vecteurs
A = (a1, a2, a3) et B = (b1, b2, b3),
le produit scalaire doit être
dotProduct (A, B) = a1b1 + a2b2 + a3b3.
Ou un peu plus compacte: 'arr = np.array ([XValues, zvalues, valeurs y]); out = arr.T.dot (arr) ' – hpaulj