numpy的按位运算

时间:2017-10-11 03:54:19

标签: python python-3.x numpy

假设我使用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

哪一个更快?有没有其他方法可以做到这一点?特别是,我想知道:

  1. 当我访问a[0]时,numpy会返回int64还是Python long
  2. 如果它返回Python long,那么我假设两种方法都很慢,因为它们处理任意精度的数字。我是否正确地假设?
  3. 如果有,那么有没有办法让按位运算处理固定精度数?
  4. 请注意,我使用的是Python版本3。

1 个答案:

答案 0 :(得分:1)

  

哪一个更快?还有其他办法吗?

第二种方法更快。

  

当我访问a[0]时,numpy会返回int64还是Python long

它会返回int64

  

如果它返回Python long,那么我假设两种方法都很慢,因为它们处理任意精度的数字。我是否正确地假设?

此主题中的更多详细信息:Slow bitwise operations