np.array сильно отличается от кортежей, списков и т. Д. c. Если вы хотите обобщить свою функцию, вам нужно подумать о каждом случае.
In [111]: def check_smaller_zeros(v):
...: if type(v) is np.array:
...: return v < 0
...: elif type(v) in (list, tuple):
...: return [x<0 for x in v]
...:
In [112]: check_smaller_zeros((-1,1,2,3,4,5))
Out[112]: [True, False, False, False, False, False]
В некоторых случаях вы можете просто преобразовать объект в массив np.array. Но это зависит от объекта, и вы должны заранее определить варианты использования.
In [114]: def check_smaller_zeros(v):
...: if type(v) is np.array:
...: return v < 0
...: else:
...: return np.array(v) < 0
...:
...:
In [115]: check_smaller_zeros((-1,1,2,3,4,5))
Out[115]: array([True, False, False, False, False, False])