bestimmte Reihenfolge über for Schleife iterieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Wechselbalg
User
Beiträge: 7
Registriert: Sonntag 24. Februar 2013, 13:44

Morgen zusammen,

Ich habe folgendes Problem:

Ich würde gerne eine Datenliste (bspw. (0,1,2,3,4,5,6,7,8)) innerhalb einer For-Schleife neu sortieren (0,3,6, 1,4,7, 2,5,9) und davon drei Mittelwerte bekommen (jeweils (0,3,6), (1,4,7) und (2,5,9)), die direkt mit append als neues array definiert werden. Hat da jemand vielleicht einen Denkanstoß?

Habe hier und dort mal ´was versucht, aber nicht mit Erfolg...

Code: Alles auswählen

relocdata=genfromtxt("Haarmann_data2.csv", delimiter=";",usecols=(1))

depthsmean=[]

for i in range(3):
    depthsmean.append(mean(nditer(relocdata[i,0], order="C")))
Gruß und Danke
BlackJack

@Wechselbalg: Wie immer bei `numpy`: Schleifen in Python-Code vermeiden und die Operation „vektorisieren”.

Code: Alles auswählen

In [17]: a
Out[17]: 
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.])

In [18]: a.reshape((-1, 3))
Out[18]: 
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])

In [19]: a.reshape((-1, 3)).mean(1)
Out[19]: array([  1.,   4.,   7.,  10.])
Wechselbalg
User
Beiträge: 7
Registriert: Sonntag 24. Februar 2013, 13:44

BlackJack hat geschrieben:@Wechselbalg: Wie immer bei `numpy`: Schleifen in Python-Code vermeiden und die Operation „vektorisieren”.

Code: Alles auswählen

In [17]: a
Out[17]: 
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.])

In [18]: a.reshape((-1, 3))
Out[18]: 
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])

In [19]: a.reshape((-1, 3)).mean(1)
Out[19]: array([  1.,   4.,   7.,  10.])
interessant: mean funktioniert, aber bei median gibt er den Geist auf: "ndarray has no object median". Würde gerne mal wissen, warum? :K
xeike
User
Beiträge: 83
Registriert: Donnerstag 28. Februar 2013, 09:58

Was funktioniert ist

Code: Alles auswählen

numpy.median(mein_array)
Xe
BlackJack

@xeike: Wobei man da in diesem Fall noch die Achse angeben muss, denn sonst bekommt man nur *einen* Wert, der dem Median aller Werte in dem Array entspricht.
Antworten