Wie kombinieren Sie mehrere numpy Masken
m1 = [0,1,1,3]
m2 = [0,0,1,1]
data = [10,20,30,40]
Möchte ich etwas wie das hier tun:
mask = (m1 == 1) & (m2 == 1)
data[mask] #should return 30
Beachten Sie, dass dieses Beispiel führt zu einer Fehlermeldung
InformationsquelleAutor siamii | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie mit python-Listen anstelle von numpy-arrays. Versuchen Sie dies:
In deinem Beispiel, wenn
m1
wurde eine Listem1 == 1
wird ausgewertet, wieFalse
(das gleiche fürm2
), so Maske warFalse
unddata[False] = data[0] = 10
.Ich bekomme die Fehlermeldung TypeError: ufunc 'bitwise_and' wird nicht unterstützt für die input-Typen, und die Eingänge können nicht sicher sein gezwungen, um einen der unterstützten Typen nach der casting-Regel "sicher". Mein dataset-es float32, könnte das ein problem sein?
Sind Sie sicher, dass sowohl m1 und m2 sind arrays von einiger Zeit? Wenn einer von Ihnen ist ein Objekt-array, das kann man nicht vergleichen 1. Verwenden Sie einfach die interaktive shell, um herauszufinden, was
m1 == 1
undm2 == 1
bewerten.ok, das problem mit den Klammern
Wenn ich versuche, führen Sie den gleichen Vorgang auf eine multi-dimensionale matrix, die die
OpenCV
wandelt ein Bild mityuv_object1 = (yuv_image > lowerLimit).astype(np.float32) | (yuv_image > upperLimit).astype(np.float32)
ich bekomme diese FehlermeldungTypeError: ufunc 'bitwise_or' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
InformationsquelleAutor