我有一个基本上如下工作的python函数:
def calculateH():
N = 1000
n = 12
k = 3
pu = np.random.random((k,n))
X = np.random.random((N,n))
H = np.zeros([k,k,n])
wH = np.zeros([k,k])
for x1 in range(n):
wH = wH*0
for i in range(N):
for k1 in range(k):
for k2 in range(k):
for bl in range(n):
for bli in range(n):
wH[k1,k2]+=pu[k2,bl]*pu[k1,bli]*X[i,bli]*X[i,bl]*X[i,x1]/N
H[:, :, x1] = wH
return H
很明显,这种实现非常缓慢(比如说,不可用)。我还有一个使用numpy
的更快的实现,这需要几分钟才能运行。
我想看看使用Cython是否可以进一步加快这个实现,但我不知道如何启动以及使用Cython的真正含义。
在Cython中有直接转换此功能的方法吗? 之后,如何从外部纯Python模块调用此函数?