Skip to content

Instantly share code, notes, and snippets.

@tsangwpx
Last active May 29, 2019 09:10
Show Gist options
  • Save tsangwpx/b442da8c997d0f4363e6478283825c0e to your computer and use it in GitHub Desktop.
Save tsangwpx/b442da8c997d0f4363e6478283825c0e to your computer and use it in GitHub Desktop.
NumPy Boolean

See https://docs.python.org/3/library/operator.html for details

Negation (Logical)

not a True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
False (bool) True (bool) False (bool) True (bool) False (bool) True (bool) False (bool) True (bool) False (bool) True (bool)

Bitwise Inversion

~a True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
-2 (int) -1 (int) False (bool_) True (bool_) 254 (uint8) 255 (uint8)

Bitwise AND

a&b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8)
False (bool) False (bool) False (bool) False (bool_) False (bool_) 0 (uint8) 0 (uint8)
True (bool_) True (bool_) False (bool_) True (bool_) False (bool_) 1 (uint8) 0 (uint8)
False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) 0 (uint8) 0 (uint8)
1 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8)
0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8)
1.0 (float)
0.0 (float)
1.0 (float64)
0.0 (float64)

Bitwise OR

a|b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) True (bool) True (bool) True (bool_) True (bool_) 1 (uint8) 1 (uint8)
False (bool) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8)
True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) 1 (uint8) 1 (uint8)
False (bool_) True (bool_) False (bool_) True (bool_) False (bool_) 1 (uint8) 0 (uint8)
1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8)
0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8)
1.0 (float)
0.0 (float)
1.0 (float64)
0.0 (float64)

Addition

a+b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) 2 (int) 1 (int) True (bool_) True (bool_) 2 (uint8) 1 (uint8) 2.0 (float) 1.0 (float) 2.0 (float64) 1.0 (float64)
False (bool) 1 (int) 0 (int) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) 2 (uint8) 1 (uint8) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64)
False (bool_) True (bool_) False (bool_) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)
1 (uint8) 2 (uint8) 1 (uint8) 2 (uint8) 1 (uint8) 2 (uint8) 1 (uint8) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64)
0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)
1.0 (float) 2.0 (float) 1.0 (float) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64) 2.0 (float) 1.0 (float) 2.0 (float64) 1.0 (float64)
0.0 (float) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
1.0 (float64) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64) 2.0 (float64) 1.0 (float64)
0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)

Product

a*b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) 1 (int) 0 (int) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
False (bool) 0 (int) 0 (int) False (bool_) False (bool_) 0 (uint8) 0 (uint8) 0.0 (float) 0.0 (float) 0.0 (float64) 0.0 (float64)
True (bool_) True (bool_) False (bool_) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)
False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) 0 (uint8) 0 (uint8) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64)
1 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1 (uint8) 0 (uint8) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)
0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64)
1.0 (float) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float) 0.0 (float) 0.0 (float64) 0.0 (float64)
1.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64) 1.0 (float64) 0.0 (float64)
0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64)

AND (Logical)

a and b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
False (bool) False (bool) False (bool) False (bool) False (bool) False (bool) False (bool) False (bool) False (bool) False (bool) False (bool)
True (bool_) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_) False (bool_)
1 (uint8) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8) 0 (uint8)
1.0 (float) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float) 0.0 (float)
1.0 (float64) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64) 0.0 (float64)

Or (Logical)

a or b True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool) True (bool) True (bool) True (bool) True (bool) True (bool) True (bool) True (bool) True (bool) True (bool) True (bool)
False (bool) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_) True (bool_)
False (bool_) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8) 1 (uint8)
0 (uint8) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float) 1.0 (float)
0.0 (float) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64) 1.0 (float64)
0.0 (float64) True (bool) False (bool) True (bool_) False (bool_) 1 (uint8) 0 (uint8) 1.0 (float) 0.0 (float) 1.0 (float64) 0.0 (float64)
import operator
import numpy as np
def main():
t_bool = True
f_bool = False
t_npb = np.bool_(True)
f_npb = np.bool_(False)
t_uint8 = np.uint8(True)
f_uint8 = np.uint8(False)
t_float = float(True)
f_float = float(False)
t_float_ = np.float_(True)
f_float_ = np.float_(False)
values = (
t_bool, f_bool,
t_npb, f_npb,
t_uint8, f_uint8,
t_float, f_float,
t_float_, f_float_,
)
# values = list(np.asarray(v) for v in values)
values = list(v for v in values)
print('See https://docs.python.org/3/library/operator.html for details')
print('# Negation (Logical)')
print(generate_table1d(operator.not_, values, op_name='`not a`'))
print('# Bitwise Inversion')
print(generate_table1d(operator.invert, values, op_name='`~a`'))
print('# Bitwise AND')
print(generate_table2d(operator.and_, values, op_name='`a&b`'))
print('# Bitwise OR')
print(generate_table2d(operator.or_, values, op_name='`a|b`'))
print('# Addition')
print(generate_table2d(operator.add, values, op_name='`a+b`'))
print('# Product')
print(generate_table2d(operator.mul, values, op_name='`a*b`'))
print('# AND (Logical)')
print(generate_table2d(lambda a, b: a and b, values, op_name='`a and b`'))
print('# Or (Logical)')
print(generate_table2d(lambda a, b: a or b, values, op_name='`a or b`'))
def format_value(value):
if value is NotImplemented:
return f' '
else:
cls = type(value)
name = cls.__qualname__
return f'`{value}` ({name})'
def map_values(fn, values, error=NotImplemented):
result = list(values)
for index, value in enumerate(result):
try:
result[index] = fn(value)
except TypeError:
result[index] = error
return result
def generate_table1d(fn, inputs, fmt_fn=format_value, op_name=''):
ninputs = len(inputs)
headers = list(format_value(s) for s in inputs)
results = map_values(fn, inputs)
rows = [
f'| {op_name} | ' + ' | '.join(headers) + ' |',
'|---' * (ninputs + 1) + '|',
f'| | ' + ' | '.join(format_value(s) for s in results) + ' |',
]
return '\n'.join(rows)
def generate_table2d(fn, inputs, fmt_fn=format_value, op_name=''):
ninputs = len(inputs)
headers = list(format_value(s) for s in inputs)
rows = [
f'| {op_name} | ' + ' | '.join(headers) + ' |',
'|---' * (ninputs + 1) + '|',
]
for a in inputs:
line = f'| {format_value(a)} | '
results = map_values(lambda s: fn(a, s), inputs)
line += ' | '.join(format_value(v) for v in results)
line += ' |'
rows.append(line)
return '\n'.join(rows)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment