假设我有两个使用numpy数组表示的位棋盘:
import numpy
bitboard = numpy.zeros(2, dtype=numpy.int64)
假设我想设置第一个位板的第10位。最快的方法是什么?
我能想到两种方法。这是第一种方法:
numpy.bitwise_or(a[0], numpy.left_shift(1, 10), out=a, where=(True, False))
这是第二种方法:
a[0] |= 1 << 10
哪个更快?还有其他的方法吗?特别是我想知道:
- 当我访问
a [0]
时,numpy返回int64
还是Python的long
? - 如果它返回Python的
long
,那么我假设这两种方法都相当慢,因为它们处理任意精度的数字。 我在假设这一点上正确吗? - 如果是这样,那么有没有办法使位运算作用于固定精度的数字?
请注意,我正在使用Python版本3。
a[0]
并检查返回类型...这些都是经验性的问题,看起来是这样。 - juanpa.arrivillaga