ich habe leider ein Laufzeitproblem.
Vielleicht hat jemand eine Idee wie ich den Code schneller bekomme.
Ich versuche aus einer Messung mit zwei Variablen ein Kennfeld zur Aufenhaltsdauer zu erzeugen (Aufsummieren der Zeit).
Der Datensatz hat über 1 Mio Einträge.
So wie ich das gelöst habe dauert das einfach ewig....
Hat jemand eine Idee? Hab schon versuch über sortieren und dann ax zu kürzen, das hat aber bei mir nicht funktioniert.
Danke schon mal!
Grüße
Code: Alles auswählen
data = pd.DataFrame({'Zeit':Drehzahl_new[:,0],'Drehzahl':Drehzahl_new[:,1],'Moment':Moment_new[:,1]})
Freq=100
ax=[0, 500, 1000, 1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000]
bx=[-100,0,100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000]
Kennfeld_Zeit=np.zeros([len(ax),len(bx)])
data_save=data
data_sorted=data.sort_values(by="Drehzahl", kind="mergesort")
data=data_sorted
f=0
for x in range(0, len(data)):
done= False
for a in range(0, len(ax)-1):
for b in range(0,len(bx)-1):
print(a,b,x)
if a==0 and b==0 and ax[a+1] > data['Drehzahl'][x] and bx[b+1] > data['Moment'][x]:
Kennfeld_Zeit[a,b]= Kennfeld_Zeit[a,b]+(1/Freq)
done= True
print('Yes 1--------------------')
break
elif a==0 and ax[a+1] > data['Drehzahl'][x] and bx[b+1] > data['Moment'][x] >= bx[b]:
Kennfeld_Zeit[a,b]= Kennfeld_Zeit[a,b]+(1/Freq)
done= True
print('Yes 2--------------------')
break
elif b==0 and ax[a+1] > data['Drehzahl'][x] >= ax[a] and bx[b+1] > data['Moment'][x]:
Kennfeld_Zeit[a,b]= Kennfeld_Zeit[a,b]+(1/Freq)
done= True
print('Yes 3----------------------')
break
elif ax[a+1] > data['Drehzahl'][x] >= ax[a] and bx[b+1] > data['Moment'][x] >= bx[b]:
Kennfeld_Zeit[a,b]= Kennfeld_Zeit[a,b]+(1/Freq)
done= True
print('Yes 4----------------------')
break
else:
print('oh NOOOO')
if done==True:
f+=1
print(f)
break