Verfasst: Donnerstag 28. Mai 2009, 10:11
Die Lösung von BlackJack bringt ja diese Fehlermeldung.CM hat geschrieben:Mögliche Lösungen hat BlackJack bereits beschrieben.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Die Lösung von BlackJack bringt ja diese Fehlermeldung.CM hat geschrieben:Mögliche Lösungen hat BlackJack bereits beschrieben.
Hmm ja, heißt das jetzt ... ?BlackJack hat geschrieben:Aaah, man kann die Überprüfung verhindern:
Ansonsten sind die "list comprehension"s, die Du da jetzt verwendest natürlich völlig fehl am Platze.Code: Alles auswählen
In [156]: a.resize((5,), refcheck=False)
Also Du meinst der Quellcode ist weniger verständlicher durch dasBlackJack hat geschrieben:.... Zusammen mit der Indexerei um jeweils nur auf die Hälfte der offenen Dateien zuzugreifen ist das jetzt schwerer verständlich als vorher.
geändertBlackJack hat geschrieben:Mit ``is`` darf man nur auf Objektidentität testen, ..., denn `data_shall_be_saved` *ist* ja schon ein Wahrheitswert, den braucht man nicht noch einmal mit einem Wahrheitswert vergleichen, ....
Die Anzahl der Dateien variiert ja, abhängig von der Anzahl der Bänder, daher ein Index. Du hattest ja auch mal vorgeschlagen die Daten andersBlackJack hat geschrieben:Ich hätte fast bemängelt, dass die Datendateien nicht wieder geschlossen werden, als ich ziemlich weit unten die Schleife entdeckte. Warum erst dort? Und warum über einen Index auf die Elemente zugreifen?
Stimmt, allerdings habe ich sonst viele gleich klingende Namen.BlackJack hat geschrieben:Der Name des Objekttyps sollte übrigens nicht im Namen auftauchen, an den das Objekt gebunden wird.
Irgendwie geht das mit dem Criterion nicht über eine Liste mit mehrerenFile "./histogramm.py", line 103, in extrahierePeaks
list_arraypeaks[criterion],
TypeError: only integer arrays with one element can be converted to an index
Code: Alles auswählen
if np.equal(np.all(list_arraypeaks[0]),np.all(list_arraypeaks[1])):
print "Bänder sind gleich"
Code: Alles auswählen
In [206]: a
Out[206]: array([1, 1, 0, 1, 0, 1, 1, 1, 1, 1])
In [207]: b
Out[207]: array([0, 1, 0, 0, 1, 1, 1, 0, 0, 1])
In [208]: a.sum(), b.sum()
Out[208]: (8, 5)
Code: Alles auswählen
In [218]: np.equal(np.all(a), np.all(b))
Out[218]: True
Code: Alles auswählen
In [219]: np.all(a), np.all(b)
Out[219]: (False, False)
In [220]: np.all?
Type: function
Base Class: <type 'function'>
String Form: <function all at 0x83a9c6c>
Namespace: Interactive
File: /usr/lib/python2.5/site-packages/numpy/core/fromnumeric.py
Definition: np.all(x, axis=None, out=None)
Docstring:
Return true if all elements of x are true:
Code: Alles auswählen
In [221]: (a == b).all()
Out[221]: False
In [222]: (a == a).all()
Out[222]: True
Code: Alles auswählen
anzahlpeaks = 0
j=0
for i in xrange(len(list_arraypeaks[0])):
j += 1
if (list_arraypeaks[0][i] == 1) | (list_arraypeaks[1][i] == 1) | (list_arraypeaks[2][i] == 1):
anzahlpeaks += 1
print "Index :",i,"Band1:",list_arraypeaks[0][i],\
"Band2:",list_arraypeaks[1][i],\
"Band3:",list_arraypeaks[2][i],\
"Übereinstimmede Peaks : ",anzahlpeaks
if j > 1000:
raw_input("PAUSE -- mit Enter weiter !")
j = 0
Mr. Zufall war am Werk.BlackJack hat geschrieben:Wo Du gerade das Wort "Methode" verwendest: Das ist eigentlich gar keine, oder habe ich irgendwo eine Verwendung von `self` übersehen!? Das sieht nach einer Funktion aus. Warum ist die an eine Klasse gebunden?
Code: Alles auswählen
[[np.array mit Zeitstempel],[3 np.arrays mit den Peaks ],
[3 np.arrays mit den Peak Werten]]
Stimmt, aber mir war halt die performance wichtig. Die ÜbersichtlichkeitBlackJack hat geschrieben:@feldmann_markus: Naja, so besonders toll ist die vorherige Funkion aber immer noch nicht.
Geändert.BlackJack hat geschrieben:`starttime` und `endtime` werden nirgends benutzt.
Ich werde mir das logging Modul noch mal angucken, aber nicht mehrBlackJack hat geschrieben:Nochmal: Zeichenketten sind keine Kommentare, ausser wenn sie das erste in einem Modul, nach einer ``def``- oder ``class``-Zeile sind. An anderen Stellen sind sie nur toter Ballast im Code.
Ich brauche für Gnuplot Leerzeichen zwischen den Daten.BlackJack hat geschrieben:Diese Zeichenketten-Additionen sind "teuer" weil bei jeder Addition eine neue Zeichenkette entsteht, die in die die Bytes der beiden alten kopiert werden. Es werden also Unmengen an temporären Zeichenketten erzeugt und wieder weggeworfen.
Ich werde das wie Du mit der map() Funktion machen.BlackJack hat geschrieben:Ausserdem werden für jede Zeile drei unnötige Arrays mit den Indexen erzeugt.
Weil die Ausgabe sonst komisch aus sah, hier mal eine Ausgabe mit real()BlackJack hat geschrieben:Und das `np.real()` ist auch unglaublich. Hast Du mal ausprobiert was das aus Skalaren macht? Das erzeugt ein `np.array` der Länge 1 mit dem Wert darin. Warum machst Du das!?
Ich gucke mir mal dein Programm an, sieht ja schon mal scharf aus.8.45053534704e-07 1 1 1 -1.0 -4.79459260937e-17j 0.5 -0.866025388241j 0.5 0.866025388241j
3.38021413882e-06 1 1 1 -3.00149301233e-17 -1.0j 0.866025388241 0.5j -0.866025388241 0.5j
0.00013436350855 1 1 1 -1.0 3.65565637658e-25j 0.5 -0.866025388241j 0.5 0.866025388241j
Danke das Du Dir die Mühe gemacht hast.BlackJack hat geschrieben:Mal ungetestet beide Methoden als Funktionen: http://paste.pocoo.org/show/119616/
Code: Alles auswählen
In [310]: c = np.complex64(4.5+2.5j)
In [311]: c
Out[311]: (4.5+2.5j)
In [312]: np.real(c)
Out[312]: array(4.5, dtype=float32)
In [313]: np.imag(c)
Out[313]: array(2.5, dtype=float32)
In [314]: c.real
Out[314]: 4.5
In [315]: c.imag
Out[315]: 2.5