Ergebnis-Array und Count mit numpy.where

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

Hallo!
Mit

Code: Alles auswählen

p = np.where( processed == 254, img, 255 )
erhalte ich ein Array mit Werten von img, wobei bei Erfüllung der Bedingung 255 eingesetzt wird.

Nun interessiert es mich auch, wie oft die Bedingung erfüllt ist,
was ich mit

Code: Alles auswählen

np.where( processed == 254 )[0].shape[0] 
erhalten würde.

Wie ist das vernünftig zu kombinieren?

Danke für Eure Tipps
Erhy
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Zumindest das Bilden der Maske könntest Du nur einmal machen, und dann die Anzahl über sum ermitteln:

Code: Alles auswählen

mask = processed == 254
image_processed = np.where(mask, image, 255)
amount = mask.sum()
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

nun es ist recht simpel:

Code: Alles auswählen

import numpy as np

a_search_in = np.ones((7,5),dtype=np.uint8)
a_apply_changes = np.zeros_like(a_search_in)
a_search_in[1,2] = 7
a_search_in[3,4] = 7
w = np.where( a_search_in == 7 ) # search
w_count = w[0].shape[0] # count
a_apply_changes[w] = 255 #apply
Erhy
Antworten