这是我的目标,使用 Python Numpy:
我想创建一个(1000,1000)维数组/点积值矩阵。这意味着每个数组/矩阵条目是向量 1 到 1000 的点积。构造它在理论上很简单:定义向量 v1、v2、...、v1000 的 (1,1000) 维矩阵
import numpy as np
vectorvalue = np.matrix([v1, v2, v3, ..., v1000])
并采用转置的点积,即
matrix_of_dotproducts = np.tensordot(vectorvalue.T, vectorvalue)
数组/矩阵的形状将是 (1000, 1000)。(1,1) 条目将是向量 (v1,v1) 的点积,(1,2) 条目将是向量 (v1,v2) 的点积,等等。为了计算点积numpy 用于三维向量,明智的做法是使用numpy.tensordot()
而不是numpy.dot()
这是我的问题:我不是从一组向量值开始的。我从每个坐标值的三个 1000 元素数组开始,即 x 坐标、y 坐标和 z 坐标的数组。
xvalues = np.array([x1, x2, x3, ..., x1000])
yvalues = np.array([y1, y2, y3, ..., y1000])
zvalues = np.array([z1, z2, z3, ..., z1000])
构造一个 (3, 1000) numpy 数组/矩阵然后为每对取张量点积是最简单的事情吗?
v1 = np.array([x1,y1,z1])
v2 = np.array([x2,y2,z2])
...
我确信有一种更容易处理和更有效的方法来做到这一点......
PS:说清楚,我想取一个3D点积。也就是说,对于向量
A = (a1, a2, a3) 和 B = (b1, b2, b3),
点积应该是
点积(A,B)= a1b1 + a2b2 + a3b3。