Angenommen, ich habe zwei bitboards stellte eine numpy Array:bitweise Operationen mit numpy
import numpy
bitboard = numpy.zeros(2, dtype=numpy.int64)
Lasst uns sagen, dass ich das 10. Bit des ersten Bitboard festlegen möchten. Was ist der schnellste Weg, dies zu tun?
Es gibt zwei Möglichkeiten, die ich mir vorstellen kann. Hier ist der erste Weg:
numpy.bitwise_or(a[0], numpy.left_shift(1, 10), out=a, where=(True, False))
Hier ist der zweite Weg:
a[0] |= 1 << 10
Welches ist schneller? Gibt es einen anderen Weg, dies zu tun? Insbesondere würde ich gerne wissen:
- Wenn ich
a[0]
zugreiftlong
einint64
oder eine Python numpy zurückkehren? - Wenn es ein Python
long
zurückgibt, dann nehme ich an, dass beide Methoden ziemlich langsam sind, weil sie an Zahlen mit beliebiger Genauigkeit arbeiten. Habe ich recht damit? - Wenn ja, gibt es eine Möglichkeit, bitweise Operationen mit Zahlen mit fester Genauigkeit zu arbeiten?
Bitte beachte, dass ich Version Python 3.
Können Sie nicht Ihr eigenes Benchmarks tun, um sie zu vergleichen? Man kann auch 'a [0]' machen und den Rückgabetyp überprüfen ... das sind empirische Fragen, so scheint es. –
macht es nicht zum Thema. Empirische Fragen sind in den StackOverflow-Richtlinien enthalten. –
Darüber hinaus ist es eine gute Ressource für andere Leute, die die gleichen Fragen haben, die ich mache. –