Numpy按位运算符优先级?

时间:2012-01-04 20:46:59

标签: python numpy operators bitwise-operators operator-precedence

numpy bitwise运算符&的优先级排名是什么?和| ?

如果我这样做

a & b | c

它评估的表达方式是什么? a & (b | c)(a & b) | c

怎么样

a | b & c

我还假设NOT(〜)具有最高优先级?

2 个答案:

答案 0 :(得分:9)

这是一种可在互联网连接断开时使用的技术。它适用于您可能遇到的许多问题。该技术的口语描述是“吮吸它并看到”。

>>> from itertools import product
>>> list(product(range(2), repeat=3))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
>>> all((a & b | c) == ((a & b) | c) for a, b, c in product(range(2), repeat=3))
True
>>> all((a & b | c) == (a & (b | c)) for a, b, c in product(range(2), repeat=3))
False

答案 1 :(得分:7)

请参阅this section of the documentation,以及this page(感谢@ F.J。)。

优先级是:

  1. not(~
  2. 和(&
  3. xor(^
  4. 或(|
  5. 这意味着:

    a & b | c == (a & b) | c
    a | b & c == a | (b & c)