(python 2)
Мой цикл for это
vx2=[]
vy2=[]
vz2=[]
for xn in range(0,npoints-2):
vx11=vx1[xn]+.5*(fxxx_list[xn]+fxxx_list[xn+1])*dt
vy11=vy1[xn]+.5*(fxxx_list[xn]+fxxx_list[xn+1])*dt
vz11=vz1[xn]+.5*(fxxx_list[xn]+fxxx_list[xn+1])*dt
vx2.append(vx11)
vy2.append(vy11)
vz2.append(vz11)
print vx2, vy2, vz2
Мой проф.сказал мне, что я могу ускорить это, заменив циклы for, просто работая с массивами Numpy, но я обнаружил, что умножение нецелых чисел и добавление / умножение в одной и той же функции Numpy было неэффективным.Есть ли элегантный способ написать это, используя Numpy вместо цикла for?
Я уже пробовал это:
#number of iterations
xn=n1[0:998]
array=np.array(xn)
vxn=vx1[0:998]
vyn=vy1[0:998]
vzn=vz1[0:998]
vvv=np.multiply((dt),(fxxx_list))
vx2=vxn+vvv
vy2=vyn+vvv
vz2=vzn+vvv
Но я не мог сделать свой алгоритм совершенно корректным, и, как вы можете видеть, это своего рода беспорядок и занимает столько же времени, сколько и для-loop.