LINUX.ORG.RU

История изменений

Исправление omegatype, (текущая версия) :

Заменил np.roll на совсем простенькую функцию, полагающую массив одномерным. С 10.5 мс. сократил до 6.5 мс. Хотелось бы ещё быстрее...

from timeit import timeit

setup = """
import numpy as np

a = np.arange(1024)

def my_roll(a, shift):
    if shift == 0:
        return a
    else:
        return np.concatenate((a[-shift:], a[:len(a) - shift]))
"""

expression = """
np.array([my_roll(a, i) for i in range(len(a))])
"""

N = 1000
print timeit(expression, setup=setup, number=N) / N * 1000, 'ms'

Исходная версия omegatype, :

Заменил np.roll на совсем простенькую функцию, полагающую массив одномерным. С 10.5 мс. сократил до 6.5 мс. Хотелось бы ещё быстрее...

from timeit import timeit

setup = """
import numpy as np

a = np.arange(1024)

def my_roll(a, shift):
    if shift == 0:
        return a
    else:
        return np.concatenate((a[-shift:], a[:len(a) - shift]))
"""

expression = """
np.array([my_roll(a, i) for i in range(len(a))])
"""

N = 1000
print timeit(expression, setup=setup, number=N) / N * 1000, 'ms'