У меня есть сложная модель конечных разностей, которая написана на python с использованием той же общей структуры, что и приведенный ниже пример кода.Он имеет два цикла for, по одному для каждой итерации, а затем в каждой итерации цикл для каждой позиции в массиве x.В настоящее время выполнение кода занимает два (возможно, из-за циклов for).Есть ли простая техника, чтобы использовать numpy для удаления второго цикла for?
Ниже приведен простой пример общей структуры, которую я использовал.
import numpy as np
def f(x,dt, i):
xn = (x[i-1]-x[i+1])/dt # a simple finite difference function
return xn
x = np.linspace(1,10,10) #create initial conditions with x[0] and x[-1] boundaries
dt = 10 #time step
iterations = 100 # number of iterations
for j in range(iterations):
for i in range(1,9): #length of x minus the boundaries
x[i] = f(x, dt, i) #return new value for x[i]
У кого-нибудь есть идеи или комментарии о том, как я могу сделать это более эффективным?
Спасибо,
Робин