我必须在2D和3D阵列之间执行点积,这对于numpy阵列来说很好。但是,当2D数组为稀疏格式时,其.dot()
方法的行为方式不同,并引发以下错误:
ValueError: could not interpret dimensions
以下是这种情况的一个例子:
import numpy as np
import scipy as sp
Cshape = (36, 3, 101)
Pshape = (36, 36)
C = np.zeros(Cshape)
for i in range(Cshape[0]):
for j in range(Cshape[1]):
for k in range(Cshape[2]):
C[i,j,k] = (i+1)*100+(j+1)*10+k+1
P = np.zeros(Pshape)
for i in range(Pshape[0]):
for j in range(Pshape[1]):
P[i,j] = i*j
test1 = P.T.dot(np.swapaxes(C,0,1))
P = sp.sparse.csr_matrix(P)
test2 = P.T.dot(np.swapaxes(C,0,1))
测试1将导致我正在寻找的输出,测试2将抛出一个错误。如果不调用.todense()
方法,如何高效地执行此操作
目前没有回答
相关问题 更多 >
编程相关推荐