Seite 1 von 1

bestimmte Reihenfolge über for Schleife iterieren

Verfasst: Sonntag 17. März 2013, 05:16
von Wechselbalg
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

Re: bestimmte Reihenfolge über for Schleife iterieren

Verfasst: Sonntag 17. März 2013, 08:10
von 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.])

Re: bestimmte Reihenfolge über for Schleife iterieren

Verfasst: Mittwoch 20. März 2013, 23:28
von Wechselbalg
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

Re: bestimmte Reihenfolge über for Schleife iterieren

Verfasst: Freitag 22. März 2013, 07:52
von xeike
Was funktioniert ist

Code: Alles auswählen

numpy.median(mein_array)
Xe

Re: bestimmte Reihenfolge über for Schleife iterieren

Verfasst: Freitag 22. März 2013, 08:42
von 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.