有问题的线路是:
# Make efficient matrix that can be built
K = sparse.lil_matrix((N, N))
# Calculate K matrix (<i|pHp|j> in the LGL-nodes basis)
for i in range(Ne):
idx_s, idx_e = i*(Np-1), i*(Np-1)+Np
print(shape(K[idx_s:idx_e, idx_s:idx_e]))
print(shape(dmat.T.dot(sparse.spdiags(w*peq[idx_s:idx_e], 0, Np, Np)).dot(dmat)))
K[idx_s:idx_e, idx_s:idx_e] += dmat.T.dot(sparse.spdiags(w*peq[idx_s:idx_e], 0, Np, Np)).dot(dmat)
但是,目前,纽比正在接受这个错误
^{pr2}$这有点神秘,因为错误似乎发生在Numpy库的某个地方,而不是在我的代码中。但我对numpy本身不太熟悉,所以可能是我间接导致了这个错误。在
两个切片的形状相同,所以这似乎不是真正的错误。在
问题是
不是一个简单的数组。它具有正确的形状,但元素是稀疏矩阵(错误消息中的“序列”)。在
将内部稀疏矩阵转化为密集数组应该可以解决以下问题:
^{pr2}$np.dot
方法不知道稀疏矩阵,至少在您的版本numpy
(1.8?),所以它将其视为序列。较新版本具有“稀疏”意识。在另一个解决方案是使用稀疏矩阵乘积(})。在
dot
或{我不得不四处寻找
N,Np,Ns, dmat,peq
的合理值。你真该给我们一些小样品。它使测试想法变得更容易。在相关问题 更多 >
编程相关推荐