Zeilen automatisch löschen < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 14:07 Di 08.02.2011 | Autor: | danm357 |
Liebe Forengemeinde,
leider habe ich ein Mathematica-Problem, das ich alleine nicht lösen kann.
Vielleicht könnt Ihr mir weiterhelfen.
Ich habe eine lange Tabelle und möchte nun bestimmte Zeilen löschen, wenn der Eintrag in einer Spalte dieser Zeile einen bestimmten Wert unter/überschreitet.
Hier ein Beispiel:
Aus folgender Tabelle soll immer die Zeile gelöscht werden, bei der der Wert in der 4ten Spalte grösser (>) als 3 ist.
Also, aus
{{a,2,g,3,f},{b,3,h,2,t},{w,5,t,4,z},{a,2,g,3,f},…},
soll folgendes werden:
{{a,2,g,3,f},{b,3,h,2,t},{a,2,g,3,f},…}
Da meine Tabelle recht lang ist (60000 Zeilen), wäre es schön, wenn mir jemand sagen kann, wie ich das geschickt programmieren kann.
Für Hinweise und kleine Tipps wäre ich auch schon sehr dankbar!
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:02 Di 08.02.2011 | Autor: | Sigma |
Hallo danm357,
probier mal folgendes
1: | Select[{{a, 2, g, 3, f}, {b, 3, h, 2, t}, {w, 5, t, 4, z}, {a, 2, g,
| 2: | 3, f}}, #[[4]] <= 3 &] |
Das wählt alle Elemente der Liste aus deren Eintrag in der 4. Spalte kleiner gleich 3 ist. Probier es aus und melde dich mal.
mfg sigma
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:21 Di 08.02.2011 | Autor: | danm357 |
Hallo Sigma,
Vielen Dank für die schnelle Antwort. So weit kam ich fast auch schon, jedoch habe ich leider nie das #-Symbol verwendet, sondern immer den Namen meiner Tabelle...
Naja, jetzt weiss ich ja Dank Dir wie es richtig geht!!
Klappt auf alle Fälle ganz wunderbar!
Danke, cu!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:46 Sa 12.02.2011 | Autor: | Peter_Pein |
Hallo,
falls dir anonyme Funktionen (noch) suspekt sind, hindert dich niemand, aus Gründen der Übersichtlichkeit die Testfunktion zu benennen:
1: | In[1]:= meinetabelle={{a,2,g,3,f},{b,3,h,2,t},{w,5,t,4,z},{a,2,g,3,f}};
| 2: | In[2]:= test[lst_]:=lst[[4]]<=3;
| 3: | In[3]:= Select[meinetabelle,test]
| 4: | Out[3]= {{a,2,g,3,f},{b,3,h,2,t},{a,2,g,3,f}} |
Eine andere "typische" Mathematica-Methode ist die Mustererkennung.
Z.B.:
1: | In[4]:= muster={__,testobjekt_,_}/;testobjekt>3;
| 2: | In[5]:= DeleteCases[meinetabelle,muster]
| 3: | Out[5]= {{a,2,g,3,f},{b,3,h,2,t},{a,2,g,3,f}} |
Ansonsten finde ich in den meisten Fällen die Beispiele in der Dokumentation von Mma hilfreich; die wahren Perlen verbergen sich jedoch oft in dem Absatz "More information" auf den Hilfeseiten.
Gruß,
Peter
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:21 Fr 11.03.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|