Seite 1 von 1

Logisches indizieren von Listen

Verfasst: Sonntag 20. April 2014, 23:47
von MoritzMoritz
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')]

Re: Logisches indizieren von Listen

Verfasst: Sonntag 20. April 2014, 23:52
von BlackJack
@MoritzMoritz: Schau Dir mal `pandas` an.

Re: Logisches indizieren von Listen

Verfasst: Montag 21. April 2014, 07:53
von Sirius3
@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]])

Re: Logisches indizieren von Listen

Verfasst: Montag 21. April 2014, 12:17
von MoritzMoritz
@sirius
:roll:
ich war wohl etwas zu müde..

@blackjack
Danke für den Tipp mit pandas