Hab da leider noch eine Frage:
Wie schaffe ich es bei einem Vergleich mit Bitoperationen nur eine stelle zu berücksichtigen?
Damit meine ich, dass ich alle Felder gleich 0 setzten möchte wenn nicht das zweite Bit gesetzt ist:
Kleines Beispiel für die zweite Stelle:
0010
1111
0111
0011
1011
Solche Zahlen in meinem Array möchte ich behalten, aber solche wo die zweite stelle 0 ist möchte ich mit nullen überschreiben.
Mir würde nur eine If-Abfrage der verschiedenen Möglichkeiten einfallen, aller dings sind das bei größeren Binärzahlen viel zu viele.
a = [[1001],[1111],[1011],[0101]]
Nach einer Operation sollte es so aussehen:
a = [[0000],[1111],[1011],[0000]]
Ich würde vermuten man könnte es irgend wie mit Bit-Operationen lösen, aber leider fehlt mir eine Idee wie.
Bitweiser Operatoren
@kl.feigling89: Du suchst die bitweise-UND-Verknüpfung mit gesetztem zweiten Bit. Da kommt 0 heraus wenn das Bit nicht gesetzt ist.
-
- User
- Beiträge: 42
- Registriert: Montag 24. Februar 2014, 14:47
Stimmt, echt einfach.
Kam aber gerade nicht selber drauf!
Danke
Kam aber gerade nicht selber drauf!
Danke
-
- User
- Beiträge: 42
- Registriert: Montag 24. Februar 2014, 14:47
ohh hab es leider doch nicht ganz verstanden.
Also wenn ich das verunde bekomme ich ja sowas:
a = [[0000][0010][0010][0000]]
wie komme ich dann von da aus zu :
a = [[0000],[1111],[1011],[0000]]
( Ausgangs Array a = [[1001],[1111],[1011],[0101]] und zweite Position soll ausschlaggebend sein. )
Also wenn ich das verunde bekomme ich ja sowas:
a = [[0000][0010][0010][0000]]
wie komme ich dann von da aus zu :
a = [[0000],[1111],[1011],[0000]]
( Ausgangs Array a = [[1001],[1111],[1011],[0101]] und zweite Position soll ausschlaggebend sein. )
Code: Alles auswählen
In [61]: a
Out[61]: array([ 9, 15, 11, 5])
In [62]: a & 0b10
Out[62]: array([0, 2, 2, 0])
In [63]: a & 0b10 == 0
Out[63]: array([ True, False, False, True], dtype=bool)
In [64]: a[a & 0b10 == 0]
Out[64]: array([9, 5])
In [65]: a[a & 0b10 == 0] = 0
In [66]: a
Out[66]: array([ 0, 15, 11, 0])
-
- User
- Beiträge: 42
- Registriert: Montag 24. Februar 2014, 14:47
Danke, habe es verstanden und konnte es erfolgreich umsetzten!