У меня проблема со временем выполнения моего кода.Единственный действительно медленный модуль - это цикл for для каждого элемента матрицы в массиве (144, 208).
Я должен проверить каждый элемент, если условие выполнено, и если это так, я должен выполнить несколько действий, таких как смещение другого (144, 208) массива, и добавить его к существующему.
Это не изменится или моя реализация слишком новичка?
Вот мой код:
# With this codeblock i am loading a specific image into python and
binarize it
g = Initialization()
b_init = g.initialize_grid(".\\geometries\\1.png")
# this function will modify the matrix m_sp, which i load in as csv.file
def expand_blockavg(x, h, w):
m, n = x.shape
return np.broadcast_to((x/float(h*w))[:, None, :, None], (m, h, n, w)).reshape(m*h, -1)
m_adapt = expand_blockavg(m_sp, 16, 16) / 256
# This is my actual calculation block
for index, x in np.ndenumerate(b_init):
if x == 1:
a = np.asarray(index)
y = np.subtract(a, index_default)
m_shift = shift(m_adapt, (y[0], y[1]), cval=0)
b = np.add(m_shift, b)
ТАК, последний блок (расчет) - это то, что занимает так много времени.Я знаю, что цикл должен проверять 30 тыс. Элементов.Но я думал, что с NumPy это будет быстрее.
Может ли кто-нибудь1 сказать мне, есть ли потенциал для оптимизации, или я должен смириться с тем, что это займет так много времени.
спасибо