У меня есть функция, которая принимает массив, позицию и число k.Функция создает все числа от нуля до k, а затем использует эти числа в качестве замены элемента в позиции pos для k копий входного массива.
Ваниль для версии цикла выглядит следующим образом:
def expand1(array,pos,k):
res = []
states = range(0,k)
for state in states:
aux = array.copy()
aux[pos] = state
res.append(aux)
return(res)
и это занимает около 770 нс ± 6,35 нс
Я пытаюсь оптимизировать это с помощью Numpy.Моя функция переписать
def expand2(array,pos,k):
aux = np.tile(array,(k,1))
aux[:,pos] = np.arange(k)
return aux
, и это займет 6,26 мкс ± 65,7 нс , что значительно дольше.
Мне было интересно о опытах, которые могут иметь людипри оптимизации кода Python , который, например, несколько раз клонирует массив и выполняет разные действия с каждой копией.
Заранее извиняюсь за возможное отсутствие этикета.Это мой первый пост здесь.
Спасибо.