假設位運算,我有兩個bitboards使用numpy的數組表示:與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
或一個Pythonlong
? - 如果它返回一個Python
long
那麼我假設這兩個方法都很慢,因爲它們工作在任意精度數字上。我是否正確地假設? - 如果是這樣,那麼有沒有什麼辦法可以讓位操作在固定精度數字上工作?
請注意,我用Python版本3.
你不能做你自己的基準來比較呢?此外,你可以做'a [0]'並檢查返回類型......看起來這些是經驗問題。 –
不會讓它脫離主題。經驗問題在StackOverflow指南中。 –
此外,對於和我有同樣問題的其他人來說,這是一個很好的資源。 –