Minor aside, don't copy (or view) your array [:] unless you're doing something besides 1:1.
import numpy as np
a = np.random.randint(10, size=(8, 8))
# array([[2, 6, 5, 1, 1, 8, 0, 3],
# [4, 7, 5, 4, 9, 6, 1, 8],
# [8, 3, 3, 4, 2, 3, 3, 0],
# [7, 3, 6, 3, 0, 0, 8, 6],
# [5, 7, 7, 0, 7, 4, 8, 6],
# [5, 9, 4, 8, 3, 2, 2, 4],
# [3, 4, 6, 6, 5, 2, 1, 0],
# [3, 7, 6, 4, 4, 4, 1, 3]])
Indexes where values meet a condition
If you feed the Boolean array (e.g. a <= 1) into np.where it returns a list of arrays where the length is equal to the number of dimensions (here, 2). Pass it to array and it turns the coordinate pairs into columns (e.g. (0, 3), (0, 4), which you can see are 0 or 1 in the above random data). Transposing it is handy .T.
np.array(np.where(a <= 1))
# array([[0, 0, 0, 1, 2, 3, 3, 4, 6, 6, 7],
# [3, 4, 6, 6, 7, 4, 5, 3, 6, 7, 6]], dtype=int64)
Values meeting a condition
Just index the array with the Boolean. It flattens it and returns the values.
a[a <= 1]
# array([1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1])
How many values meet a condition
np.count_nonzero(a <= 1)
# 11