check_dirloop: You could try replacing the isinstance checks with simple type checks, since bool is a subclass of int and isinstance will also return True if the argument is an int.
check_r: You could try replacing the np.issubdtype check with a simple type check, since float is a subclass of int and np.issubdtype will also return True if the argument is an int.
check_rel_sbm: You could try replacing the nested for loops with a single loop over the flattened array, using the ndarray.flat attribute
check_dirloop: You could try replacing the isinstance checks with simple type checks, since bool is a subclass of int and isinstance will also return True if the argument is an int.
check_r: You could try replacing the np.issubdtype check with a simple type check, since float is a subclass of int and np.issubdtype will also return True if the argument is an int.
check_rel_sbm: You could try replacing the nested for loops with a single loop over the flattened array, using the ndarray.flat attribute