2017-09-22 3 views
1

Gibt es eine nicht-ausführliche Möglichkeit, eine Liste in binäre Entscheidung basierend auf einer Bedingung zu konvertieren? zB:Python: Liste in binäre Entscheidung basierend auf einer Bedingung konvertieren

patientAge = [19, 15, 13, 21, 37] 

# wanted output: [1, 0, 0, 1, 1] # true if >18 otherwise false 
# e.g. in matlab simply "patientAge>18" 
+1

'(np.array (patientAge)> 18) .astype (int)' wenn Sie 'numpy' verwenden. –

+0

Versuchen Sie: 'Mean (Filter (Lambda x: x> 18, patientAge))' Auch, es gibt keinen Sinn Nickerchen und Vergleiche von Sprachen. Für alles, was Matlab besser macht, gibt es 10 Dinge, bei denen Python besser ist. –

+0

Das funktioniert nicht für die realen Daten, an denen ich arbeite, da ich die Indizes eines Arrays basierend auf einer Bedingung erhalten muss und die entsprechenden Indizes aus einem anderen auswählen muss: Matlab Semantik von "mean (score (patientAge> 18))" ? d.h. die durchschnittliche Punktzahl von allen über 18? patientAge = [19, 15, 13, 21, 37] score = [123, 213, 429, 98, 50] patientAge = np.array (patientAge) score = np.array (score) = idx (patientAge> 18) print (idx) drucken (np.mean (score (idx))) # TypeError: Objekt 'numpy.darray' kann nicht aufgerufen werden – user2952361

Antwort

3

doch einfach eine Liste Verständnis verwenden:

>>> patientAge = [19, 15, 13, 21, 37] 
>>> [age > 18 for age in patientAge] 
[True, False, False, True, True] 

und wenn Sie 1 oder 0 ist:

>>> [int(age > 18) for age in patientAge] 
[1, 0, 0, 1, 1] 
1
  • Begreifen: [ v > 18 for v in patientAge ]
  • Wenn numpy mit (unter der Annahme patientAge ist ein numpy.array) Sie können auch patientAge > 18 schreiben und erhalten eine Bool numpy.array
0

Sie die Liste in eine numpy Array drehen kann:

>>> patientAge = [19, 15, 13, 21, 37] 
>>> patientAge = numpy.array(patientAge) 
>>> patientAge>18 
array([ True, False, False, True, True], dtype=bool) 
>>> _+0    # if you want ints 
array([1, 0, 0, 1, 1]) 

Die Syntax vertraut ist, weil numpy (und matplotlib) natürlich auf Basis von Matlab sind .

Verwandte Themen