Ich möchte mehrere Masken auf einem großen Array zusammenführen, das nicht die gleiche Größe hat. Die zweiten Masken werden nach dem Anwenden der ersten Maske usw. auf eine beliebige Anzahl von Masken hergestellt. Als Beispiel lassen Sie uns sagen, dass wir die folgende Array und eine Maske von ihm erstellen:Mehrere Masken mit verschiedenen Größen zusammenführen
A = np.arange(10)
mask1 = (A <= 5)
Jetzt wollen wir eine andere Maske anzuwenden, sondern nur auf die Daten durch mask1 gehen, wie folgt aus:
mask2 = (A[mask1] % 2 == 0)
Um die unmaskierten Daten erhalten Sie tun können:
D = A[mask1][mask2]
wenn Sie jedoch eine beliebige Anzahl von Masken, die jeweils nach der letzten Maske angewendet wurde wäre es ziemlich umständlich bekommen. Gibt es eine bequeme Möglichkeit, die Masken zusammenzuführen, obwohl sie nicht die gleiche Größe haben, aber aus demselben Array aufgebaut sind?
Offensichtlich konnte ich tun,
mask = (A <= 5 & A % 2 == 0)
aber das ist nicht möglich, mit den Daten, mit denen ich arbeite, wie ich brauche, um schrittweise Masken anwenden. sonst wäre es einfach zu langsam.
Vielen Dank im Voraus.
Wenn Sie eine Liste solcher Masken haben, könnten Sie Schleife durch und bei jeder Wiederholung erhalten Scheiben. Also, etwas wie 'A = A [mask_each_iteration]' oder um das Eingangsarray nicht zu zerstören, kopiere 'A' in ein Ausgangsarray: out = A.copy() 'und mache dann solch ein Slicing in einer Schleife? Da 'mask2' von' mask1' usw. abhängt, benötigen Sie einen iterativen Prozess. – Divakar
Ich denke, die folgenden funktionieren würde: 'total_mask = np.zeros (len (mask1))' ' q = 0 ' ' for i in range (len (mask1)): '' wenn mask1 [i] == 1: ' ' total_mask [i] = (maske2 [q] == 1) ' ' q + = 1' Das scheint nicht ein sehr schöner Weg, es zu tun, aber es könnte nur Arbeit. – user7012893