大維矩陣這是我的目標,使用Python numpy的:Python中,創建的3維點積
我想創建點積值的(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:要清楚,我想借此三維積。即,對於載體
A =(A1,A2,A3) 和B =(B1,B2,B3),
點積應該是
dotproduct(A,B)= a1b1 + a2b2 + a3b3。
或稍微更緊湊:'ARR = np.array([xvalues,yvalues,zvalues]); out = arr.T.dot(arr)' – hpaulj