If no indexURL is provided, we throw and catch an error and
then use ErrorStackParser to calculate where pyodide.js has
been loaded from. Resolves #2290.
ENH Calculate indexURL from error stack trace. If no indexURL is provided, we throw and catch an error and
then use ErrorStackParser to calculate where pyodide.js has
been loaded from. Resolves #2290.
# setup: n=100 ; import numpy; db = numpy.random.randint(2, size=(n, 4), dtype='bool')
# run: check_mask(db)
# from:
# http://stackoverflow.com/questions/34500913/numba-slower-for-numpy-bitwise-and-on-boolean-arrays

# pythran export check_mask(bool[][])
import numpy as np


def check_mask(db, mask=(1, 0, 1)):
    out = np.zeros(db.shape[0], dtype=bool)
    for idx, line in enumerate(db):
        target, vector = line[0], line[1:]
        if (mask == np.bitwise_and(mask, vector)).all():
            if target == 1:
                out[idx] = 1
    return out

# setup: n=100 ; import numpy; db = numpy.random.randint(2, size=(n, 4), dtype='bool')
# run: check_mask(db)
# from:
# http://stackoverflow.com/questions/34500913/numba-slower-for-numpy-bitwise-and-on-boolean-arrays

# pythran export check_mask(bool[][])
import numpy as np


def check_mask(db, mask=(1, 0, 1)):
    out = np.zeros(db.shape[0], dtype=bool)
    for idx, line in enumerate(db):
        target, vector = line[0], line[1:]
        if (mask == np.bitwise_and(mask, vector)).all():
            if target == 1:
                out[idx] = 1
    return out
