3.4. Array Logic

3.4.1. Contains

import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

2 in a
# True

0 in a
# False

[1, 2, 3] in a
# True

[1, 2] in a
# False

[3, 4] in a
# False

3.4.2. Is In

import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

b = np.array([1, 5, 9])

np.isin(a, b)
# array([[ True, False, False],
#        [False,  True, False]])

3.4.3. Scalar Comparison

import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

a == 2
# array([[False,  True, False],
#        [False, False, False]])

a != 2
# array([[ True, False,  True],
#        [ True,  True,  True]])

a > 2
# array([[False, False,  True],
#        [ True,  True,  True]])

a >= 2
# array([[False,  True,  True],
#        [ True,  True,  True]])

a < 2
# array([[ True, False, False],
#        [False, False, False]])

a <= 2
# array([[ True,  True, False],
#        [False, False, False]])

3.4.4. Broadcasting Comparison

import numpy as np


a = np.array([1, 2, 3])
b = np.array([3, 2, 1])

a == b
# array([False, True, False])

a != b
# array([ True, False,  True])

a > b
# array([False, False,  True])

a >= b
# array([False,  True,  True])

a < b
# array([ True, False, False])

a <= b
# array([True, True, False])

3.4.5. Any

import numpy as np


a = np.array([True, False, False])
# array([True, False, False])

a.any()
# True
import numpy as np


a = np.array([[True, False, False],
              [True, True, True]])

a.any()
# True

a.any(axis=0)
# array([ True,  True,  True])

a.any(axis=1)
# array([ True,  True])

3.4.6. All

import numpy as np


a = np.array([True, False, False])

a.all()
# False
import numpy as np


a = np.array([[True, False, False],
              [True, True, True]])

a.all()
# False

a.all(axis=0)
# array([ True, False, False])

a.all(axis=1)
# array([False,  True])

3.4.7. Logical NOT

  • np.logical_not(...)

  • ~(...)

import numpy as np


a = np.array([[True, False, False],
              [True, True, True]])

np.logical_not(a)
# array([[False,  True,  True],
#        [False, False, False]])

~a
# array([[False,  True,  True],
#        [False, False, False]])
import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

np.logical_not(a > 2)
# array([[ True,  True, False],
#        [False, False, False]])

~(a > 2)
# array([[ True,  True, False],
#        [False, False, False]])

3.4.8. Logical AND

  • Meets first and second condition at the same time

  • np.logical_and(..., ...)

  • (...) & (...)

import numpy as np


a = np.array([True, False, False])
b = np.array([True, True, False])

np.logical_and(a, b)
# array([ True, False, False])

a & b
# array([ True, False, False])
import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

np.logical_and(a > 2, a < 5)
# array([[False, False,  True],
#        [ True, False, False]])

(a > 2) & (a < 5)
# array([[False, False,  True],
#        [ True, False, False]])

3.4.9. Logical OR

  • Meets first or second condition at the same time

  • np.logical_or(..., ...)

  • (...) | (...)

import numpy as np


a = np.array([True, False, False])
b = np.array([True, True, False])

np.logical_or(a, b)
# array([ True,  True, False])

a | b
# array([ True,  True, False])
import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

np.logical_or(a < 2, a > 4)
# array([[ True, False, False],
#        [False,  True,  True]])

(a < 2) | (a > 4)
# array([[ True, False, False],
#        [False,  True,  True]])

3.4.10. Logical XOR

  • Meets first or second condition, but not both at the same time

  • np.logical_xor(..., ...)

  • (...) ^ (...)

import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])

np.logical_xor(a < 2, a > 4)
# array([[ True, False, False],
#        [False,  True,  True]])

(a < 2) ^ (a > 4)
# array([[ True, False, False],
#        [False,  True,  True]])

3.4.11. Readability Counts

import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6]])


(a < 2) & (a > 4) | (a == 3)
# array([[False, False,  True],
#        [False, False, False]])
import numpy as np


a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

lower = (a > 2)
upper = (a < 6)
nine = (a == 9)
range = lower & upper

lower & upper
# array([[False, False,  True],
#        [ True,  True, False],
#        [False, False, False]])

range | nine
# array([[False, False,  True],
#        [ True,  True, False],
#        [False, False,  True]])

lower & upper | nine
# array([[False, False,  True],
#        [ True,  True, False],
#        [False, False,  True]])

3.4.12. Assignments

3.4.12.1. Numpy Logic Even

  • Assignment: Numpy Logic Even

  • Last update: 2020-10-01

  • Complexity: easy

  • Lines of code: 4 lines

  • Estimated time: 5 min

  • Filename: assignments/numpy_logic_even.py

English:
  1. Set random seed to zero

  2. Generate a: np.ndarray of 9 random integers from 0 to 100 (exclusive)

  3. Check for even numbers which are less than 50

  4. Check if all numbers matches this condition

  5. Check if any number matches this condition

Polish:
  1. Ustaw ziarno losowości na zero

  2. Wygeneruj a: np.ndarray z 9 losowymi liczbami całkowitymi od 0 do 100 (rozłącznie)

  3. Sprawdź parzyste elementy, które są mniejsze od 50

  4. Sprawdź czy wszystkie liczby spełniają ten warunek

  5. Sprawdź czy jakakolwiek liczba spełnia ten warunek

3.4.12.2. Numpy Logic Isin

  • Assignment: Numpy Logic Isin

  • Last update: 2020-10-01

  • Complexity: easy

  • Lines of code: 9 lines

  • Estimated time: 5 min

  • Filename: assignments/numpy_logic_isin.py

English:
  1. Set random seed to zero

  2. Generate a: np.ndarray of 50 random integers from 0 to 100 (exclusive)

  3. Generate b: np.ndarray with sequential powers of 2 and exponential from 0 to 6 (inclusive)

  4. Check which elements from a are present in b

Polish:
  1. Ustaw ziarno losowości na zero

  2. Wygeneruj a: np.ndarray z 50 losowymi liczbami całkowitymi od 0 do 100 (rozłącznie)

  3. Wygeneruj b: np.ndarray z kolejnymi potęgami liczby 2, wykładnik od 0 do 6 (włącznie)

  4. Sprawdź, które elementy z a są obecne w b