【发布时间】:2018-03-22 14:47:21
【问题描述】:
假设我有两个使用 numpy 数组表示的 bitboards:
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 指南中。
-
此外,对于与我有相同问题的其他人来说,这是一个很好的资源。
标签: python python-3.x numpy