für ein kleines Programm habe ich mir eine Funktion selbst geschrieben.
Diese funktioniert soweit, ist aber langsam und braucht 97% der Rechenzeit des gesamten Programms.
Dir Funktion bekommt als Input ein Numpy Array der Größe 300000x3
In der 3 Spalte sind Zahlen zwischen -5 bis 100.
Ziel war es eine Matrix zu erzeugen in dem nur Zeilen des Arrays sind, die in der dritten Spalte Zahlen kleine 5 haben.
Mit einen for loop habe ich eine Zählvariable erzeugt, danach die Matrix konditioniert und dann per zweiten for loop die Werte dort rein geschrieben.
Gibt es für das Problem eine elegantere Lösung mit der man die Geschwindigkeit steigern könnte?
Code: Alles auswählen
def rdc(m_compl) :
j=0;m_red=[]
x=np.argsort(m_compl[:,2])
for i in range(0,len(x)):
index=x[i];
if m_compl[index,2] <= 5:
j=j+1
m_red=np.ones((j,3))
for i in range(0,j):
index=x[i]
m_red[i,0]=m_compl[index,0]
m_red[i,1]=m_compl[index,1]
m_red[i,2]=m_compl[index,2]
return m_red