У меня есть следующий код, где я использую numpy.dot, чтобы ускорить мои вычисления.Точка Numpy в цикле for
u = numpy.zeros((l, l))
wp = numpy.zeros((l,2))
# some code which edits u and wp
for x in range(N):
wavg = numpy.dot(wp[:, 0], wp[:, 1])
wp[:, 0] = 1.0/wavg*numpy.dot(u, numpy.multiply(wp[:, 0], wp[:, 1]))
Для малых l самая медленная часть - это внешний контур. Теперь я спрашиваю себя, есть ли способ избавиться от этого цикла?
Edit: В математических терминах этот код будет выглядеть следующим образом
В этой строке 'some code' вы выращиваете' u' и 'wp'? Какова окончательная форма этих двух массивов? Что такое 'wp [:, 0]' и 'wp [:, 1]' в уравнении? – hpaulj
Это правильно. Они не меняют свою форму, но записи будут, конечно, определены в коде, который немного длиннее и, на мой взгляд, не имеет значения здесь. wp [:, 0] равно f, а wp [:, 1] соответствует w. Количество шагов времени: N – HighwayJohn
Вы можете предварительно скопировать V_ij = U_ij * w_j для небольшого увеличения производительности здесь – Eric