Seite 1 von 1

gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Donnerstag 7. Juli 2022, 19:07
von mediamarc
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?

Re: gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Donnerstag 7. Juli 2022, 19:30
von __blackjack__
@mediamarc: Wie hast Du denn nach grün gefiltert? Negiere einfach die Bedingung. Ich vermute mal der ``~``-Operator könnte hilfreich sein.

Re: gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Freitag 8. Juli 2022, 13:02
von mediamarc
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)]

Re: gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Freitag 8. Juli 2022, 13:31
von Sirius3
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]

Re: gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Freitag 8. Juli 2022, 13:51
von __blackjack__
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]

Re: gefilterte Punktwolke von Urspungspunktwolke abziehen

Verfasst: Freitag 8. Juli 2022, 14:22
von mediamarc
Vielen Dank für Eure Antworten. Das Problem ist nun gelöst!