Ich habe einen memmap zum Lesen von Binärdaten (> 1000 Dateien von >> 1000 Datensätze jeweils)Zählen in einem numpy memmap hängt Kriterium auf zwei Felder
f = np.memmap('data.dat', dtype= myFormat, mode= 'r')
und weiß, wie die Datensätze zählen eine Bedingung erfüllt, je auf einem einzigen Feld (mit dem Namen 'Status' in myFormat):
eval = f['Status'] & 0x20 == 0x20
nNotEval = np.count_nonzero(eval == False)
ist ein weiteres Feld bedingt auf eval verwendet:
v = calibration * f['V'][eval]
Nun, wie man zwei Bedingungen elementweise kombiniert? Die folgenden failes:
unexpected = (f['Status'] & 0x02 == 0) and (v > 15.)
Python Demonstrationen „Der Wahrheitswert eines Arrays mit mehr als einem Element ist mehrdeutig“ und schlägt vor, „Use a.any() oder a.All()“, aber das ist nicht das, was Ich brauche für
nUnexpected = np.count_nonzero(unexpected)
Muss ich iterieren? Wenn ja, wie ist die Syntax? Etwas wie for (a,b) in ...
?
Vielen Dank. & funktioniert bei mir. Und ich hätte SO nach der verbatim Fehlermeldung suchen sollen. – Rainald62
Entschuldigung, ich akzeptierte die Antwort vor dem richtigen Testen. & hat für einen Fall funktioniert, aber jetzt bekomme ich folgende Fehlermeldung: ValueError: Operanden konnten nicht zusammen mit shapes (682,) (674,) 'ausgestrahlt werden. – Rainald62
682 ist das 'len' von' f ['Status'] & 0x02 == 0', von 'eval' und von' f ['V'] '. Die Länge wird in der Operation "f ['V'] [eval]" zu 674. – Rainald62