我有以下一段代码正在执行我想要的操作(它是克里金方法的一部分)。但问题是它太慢了,我想知道是否有任何选项可以将for循环压缩到numpy?如果我推出numpy.sum,并在那里使用axis参数,它会加快一点,但显然这不是瓶颈。如何我可以倒推for循环的任何想法,numpy的加快步伐,或其他方式来加快步伐?)如何将for循环推向numpy
# n = 2116
print GRZVV.shape # (16309, 2116)
print GinvVV.shape # (2117, 2117)
VVg = numpy.empty((GRZVV.shape[0]))
for k in xrange(GRZVV.shape[0]):
GRVV = numpy.empty((n+1, 1))
GRVV[n, 0] = 1
GRVV[:n, 0] = GRZVV[k, :]
EVV = numpy.array(GinvVV * GRVV) # GinvVV is numpy.matrix
VVg[k] = numpy.sum(EVV[:n, 0] * VV)
我张贴的ndarrays n矩阵的尺寸以清除一些东西出来
编辑:VV的形状是2116
什么形状是' VV'? –
如果'VV.shape ==(16309,)',你怎么能通过形状为'(n,)'的'EVV [:n,0]'来生成它? – askewchan
也许你的循环的最后一行应该有'EVV [:n,0] * VV [k]',这似乎是@ Jaime的答案所假设的。 – askewchan