Как ускорить код скрипта в python? - PullRequest
0 голосов
/ 17 ноября 2018

Я трачу много времени, чтобы ускорить приведенный ниже сценарий, но не могу. Не могли бы вы помочь мне или предложить какой-нибудь способ ускорить его? Это мой код

import numpy as np
import time
#Unchange
input = np.random.randn(300,400,500)
step_x = 30
step_y = 40
step_z = 50
lst_x = np.arange(0, input.shape[0] + step_x, step_x)
lst_y = np.arange(0, input.shape[1] + step_y, step_y)
lst_z = np.arange(0, input.shape[2] + step_z, step_z)
results = np.zeros((input.shape))
t0 = time.time()
for i in range(len(lst_x)):
  for j in range(len(lst_y)):
      for k in range(len(lst_z)):
          xx= lst_x[i]
          yy= lst_y[j]
          zz= lst_z[k]
          patch = input[xx : xx + step_x, yy : yy + step_y, zz : zz + step_z]          
          patch_added = np.random.randn(patch.shape[0],patch.shape[1],patch.shape[2]) + patch
          results[xx : xx + step_x, yy : yy + step_y, zz : zz + step_z] += patch_added
print ('Time consumption: ', time.time()-t0)

Вы можете запустить онлайн на https://repl.it/repls/PleasingGhostwhiteNetworking

В настоящее время на Repl.it требуется 11 секунд. Можете ли вы сделать это быстрее в Python 3?

Обновление: У меня есть исходный массив ввода, который является 3D-массивом. Из массива я буду извлекать патчи размером 30x40x50 и обрабатывать патч. После этого обработанные исправления будут назначены в массив результатов с местоположением, совпадающим с местоположением исправлений в input

1 Ответ

0 голосов
/ 17 ноября 2018

Изменение

patch_added = np.random.randn(patch.shape[0],patch.shape[1],patch.shape[2]) + patch

на

patch_added = np.zeros(patch.shape) + patch

понижает "Расход времени" примерно до 2 секунд вместо 10-11.

Это означает, что сценарийв основном тратит свое время на генерацию случайных чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...