gefilterte Punktwolke von Urspungspunktwolke abziehen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
mediamarc
User
Beiträge: 16
Registriert: Freitag 1. Juli 2022, 09:24

Ich habe folgendes Problem:
Ich habe eine Punktwolke (df1) nach HSV-Werten (grün) gefiltert und als eigenen Dataframe (df2) angelegt. Nun möchte ich von der ursprünglichen Punktwolke (df1) die gefilterte Punktwolke (df2) abziehen, sodass ich praktisch ein dritten Dataframe (df3) erhalte, der die übrigen Punkte ohne grün enthält. Welche Funktion wäre hier angebracht?
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mediamarc: Wie hast Du denn nach grün gefiltert? Negiere einfach die Bedingung. Ich vermute mal der ``~``-Operator könnte hilfreich sein.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
mediamarc
User
Beiträge: 16
Registriert: Freitag 1. Juli 2022, 09:24

Hier der Code, mit dem ich die Punktwolke gefiltert habe:

Code: Alles auswählen

df2 = df.set_axis(['X', 'Y', 'Z', 'R', 'G', 'B', 'Nx', 'Ny', 'Nz', 'H', 'S', 'V'], axis=1, inplace=False)
df3 = df2[(df2.H >= 60) & (df2.H <= 180) & (df2.S >= 30) & (df2.V >= 30)]
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Immer schön, wenn man aus den Antworten nicht herauslesen kann, ob das Problem nun gelöst ist, oder nicht.
Für alle anderen, hier die Lösung:

Code: Alles auswählen

mask = (df2.H >= 60) & (df2.H <= 180) & (df2.S >= 30) & (df2.V >= 30)
df_gruen = df2[mask]
df_nicht_gruen = df2[~mask]
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde noch bessere Namen und `Series.between()` in den Ring werfen:

Code: Alles auswählen

    green_mask = (
        all_points_data["H"].between(60, 180)
        & (all_points_data["S"] >= 30)
        & (all_points_data["V"] >= 30)
    )
    green_points_data = all_points_data[green_mask]
    non_green_points_data = all_points_data[~green_mask]
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
mediamarc
User
Beiträge: 16
Registriert: Freitag 1. Juli 2022, 09:24

Vielen Dank für Eure Antworten. Das Problem ist nun gelöst!
Antworten