У меня есть следующий фрагмент кода, который делает именно то, что я хочу (это часть метода кригинга). Но проблема в том, что он идет слишком медленно, и я хочу знать, есть ли какая-нибудь возможность перевести цикл for в numpy? Если я вытолкну numpy.sum и использую там аргумент оси, он немного ускорится, но, видимо, это не узкое место. Любые идеи о том, как я могу нажать forloop на 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, чтобы прояснить некоторые вещи.
редактировать: форма ВВ 2116
VV.shape == (16309,)
, как вы можете умножить его наEVV[:n, 0]
, который имеет форму(n,)
? - person askewchan   schedule 23.09.2013EVV[:n, 0] * VV[k]
, что, похоже, и предполагает ответ @Jaime. - person askewchan   schedule 23.09.2013