Logisches indizieren von Listen

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
MoritzMoritz
User
Beiträge: 10
Registriert: Dienstag 4. März 2014, 22:32

ich habe einen Datensatz aus einer txt Datei importiert:

Code: Alles auswählen

data=['1, 2, 3', '4, 5, 6', '7, 8, 9']
data_label=['A,'A','B']
in matlab kann ich sehr einfach mir alle Datensätze zu Objekt A anzeigen lassen:
data(data_label=='A') ( hier ist der Datensatz bereits eine Matrix vom typ float)

in python verwende ich generators:

Code: Alles auswählen

idx =[i for i,x in enumerate(data_label) if data_label =='A']
[data[i] for i in idx]
Frage 1) Geht das auch einfacher ? Oder muss ich mich daran gewöhnen, wenn ich Python verwenden will ? (ich verwende den Datensatz in weiterer Folge als np.array)

Stelle mir das in etwa so vor:
data[np.where(data_label=='A')]
BlackJack

@MoritzMoritz: Schau Dir mal `pandas` an.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@MoritzMoritz: wo ist der Unterschied zu Matlab?

Code: Alles auswählen

>>> data=numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> data_label=numpy.array(['A','A','B'])
>>> data_label=='A'
array([ True,  True, False], dtype=bool)
>>> data[data_label=='A']
array([[1, 2, 3],
       [4, 5, 6]])
MoritzMoritz
User
Beiträge: 10
Registriert: Dienstag 4. März 2014, 22:32

@sirius
:roll:
ich war wohl etwas zu müde..

@blackjack
Danke für den Tipp mit pandas
Antworten