Векторизация этого расчета вместо циклов - PullRequest
0 голосов
/ 23 апреля 2019

Есть ли векторизованное решение для замены петли ниже? Для расчета цикла требуется около 5 минут, в то время как векторизованный расчет займет секунды.

Обратите внимание, что вычисление может быть любым (на основе 2 списков длиной 31).

#ICEBAL is a PY file
from ICEBAL import get_EdF

Вот расчет ниже:

actls = [20.00,21.00,22.00,23.00,24.00,25.00,26.00,27.00,28.00,29.00,30.00,31.00,32.00,33.00,34.00,35.00,36.00,37.00,38.00,39.00,40.00,41.00,42.00,43.00,44.00,45.00,46.00,47.00,48.00,49.00,50.00]
preds = [19.00,20.00,21.00,22.00,23.00,24.00,25.00,26.00,27.00,28.00,29.00,30.00,31.00,32.00,33.00,34.00,35.00,36.00,37.00,38.00,39.00,40.00,41.00,42.00,43.00,44.00,45.00,46.00,47.00,48.00,49.00]
EdF = get_EdF(actls,preds)

Я хочу применить расчет EdF к тестовому набору. Цикл ниже работает, но он слишком медленный для запуска.

test['EdF'] = 0
for i in range(0,884):
    test['EdF'].iloc[i] = get_EdF(np.squeeze(actuals[i:i+1]).tolist(),np.squeeze(predictionsneuralnet[i:i+1]).tolist()))

test - это стандартный набор данных Pandas (с 884 строками).

print(np.array(actuals).shape)
print(np.array(predictionsneuralnet).shape)

Выход (884, 31) для обоих.

...