Mam następujący kod wykonując dokładnie to, co chcę (jest to część metody kriging). Ale problem polega na tym, że działa zbyt wolno i chciałbym się dowiedzieć, czy istnieje jakaś opcja przesunięcia pętli for do numpy? Jeśli wyrzucę numpy.sum i użyję tam argumentu osi, to przyspieszy trochę, ale najwyraźniej nie jest to wąskie gardło. Wszelkie pomysły, w jaki sposób mogę popchnąć forloop do NumPy ją przyspieszyć, lub inne sposoby, aby ją przyspieszyć?)Jak przesunąć pętlę for do 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)
Zamieściłem wymiarów ndarrays n macierzy, aby wyczyścić pewne rzeczy z
edit: kształt VV wynosi 2116
Jaki kształt jest ' VV'? –
Jeśli 'VV.shape == (16309,)', w jaki sposób można go zmnożyć przez 'EVV [: n, 0]', który ma kształt '(n,)'? – askewchan
Być może ostatnia linia twojej pętli powinna mieć 'EVV [: n, 0] * VV [k]', co wydaje się być odpowiedzią @ Jaime'a. – askewchan