2
我試圖加快我的代碼來執行一些數值計算,我需要乘以3點矩陣與數組。問題的結構如下:適應矩陣陣列乘法使用numpy的Tensordot
- 的陣列的形狀(N,10)
- 的第一矩陣是沿陣列的動態尺寸恆定,並且具有(10,10的形狀)
- 另外兩個矩陣沿所述陣列的所述第一尺寸改變,並且具有(N,10,10)形狀
- 計算的結果應與(N,形狀)的陣列
我已經使用for循環實現了一個解決方案是工作,但我想有更好的表現,所以我嘗試使用numpy的功能。我已經使用numpy.tensordot嘗試,但與陣列乘以動態矩陣時,我得到的(N,10,N)代替(N,10)的形狀
我的for循環如下:
res = np.zeros(temp_rho.shape, dtype=np.complex128)
for i in range(temp_rho.shape[0]):
res[i] = np.dot(self.constMatrix, temp_rho[i])
res[i] += np.dot(self.dinMat1[i], temp_rho[i])
res[i] += np.dot(self.dinMat2[i], np.conj(temp_rho[i]))
#temp_rho.shape = (N, 10)
#res.shape = (N, 10)
#self.constMatrix.shape = (10, 10)
#self.dinMat1.shape = (N, 10, 10)
#self.dinMat2.shape = (N, 10, 10)
如何把這個代碼實現numpy的點積,返回正確尺寸是多少?