numpy с cython, быстрее ли это на больших наборах данных? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть много понимания списков, которые обычно были бы немного быстрее, если бы я использовал numpy массивы вместо подсписок, но в конце я планирую скомпилировать его в cython. Разве разумнее использовать python списки вместо numpy в коде, когда я все равно планирую скомпилировать его в cython? или У массивов numpy наблюдается ускорение после компиляции с помощью cython, или у меня повышается производительность, когда я просто использую обычные списки python? Это пропорционально? (Я использую очень большие наборы данных (от полумиллиона до нескольких миллионов элементов или подсписок))

несколько примеров того, как выглядят мои представления списков:

nextInt = 1
winPoints  = [[max(upSlice[:i])  for i in range(nextInt,len(upSlice)+1)] for upSlice in ppValues]```
def get_slice_max(arr, start):
    result = [max(arr[:start])]
    for i in range(start, len(arr)):
        result.append(max(result[-1], arr[i]))
    return result
winPoints  = [get_slice_max(upSlice, nextInt) for upSlice in ppValues]
winningRatio =[ [1 if ratioUp >ratioDown  else 0 if (ratioDown>ratioUp) else
                1 if (pointsUp>pointsDown) else 0 if (pointsDown>pointsUp) else 1   
                for ratioUp,ratioDown,pointsUp,pointsDown                  in  zip(ratioUpSlice,ratioDownSlice,pointsUpSlice,pointsDownSlice)] 
                for ratioUpSlice,ratioDownSlice,pointsUpSlice,pointsDownSlice in  zip(ratios_Up,ratios_Down, pointsUpSlices,pointsDownSlices)]

EDIT: извините Я сформулировал вопрос неоднозначно / неправильно:

Имеет ли значение использование numpy перед запуском кода через Cython? И если да, то это выигрыш по эффективности больше, чем при использовании списков python и работе в cython?

...