Непонятно почему вы думаете, что должно быть улучшение.Я вижу улучшение, добавив внутренний цикл с numba
, который может быть, потому что JIT-компиляция может оптимизировать операции с более базовыми типами более низкого уровня.
# python 3.6.0, numpy 1.11.3, numba 0.30.1
np.random.seed(0)
def f(m, n):
a = np.ones(n)
for i in range(m):
a += np.random.normal(0,1,n)
return a
@jit
def g(m, n):
a = np.ones(n)
for i in range(m):
x = np.random.normal(0,1,n)
for j in range(n):
a[j] += x[j]
return a
%timeit f(10**5, 10**3) # 6.53 s per loop
%timeit g(10**5, 10**3) # 4.68 s per loop