You could use np.diff for this
a = np.array([0., -5., 4., -3., 0., -2.])
diff = np.diff(a)
print("Consecutive Positive results: ", np.count_nonzero(diff > 0))
print("Consecutive Zero results: ", np.count_nonzero(diff == 0))
print("Consecutive Negative results: ", np.count_nonzero(diff < 0))
Output:
Consecutive Positive results:  2
Consecutive Zero results:  0
Consecutive Negative results:  3
EDIT
Did not read the question properly. Here is my new attempt:
a = np.array([  0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,
                0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,   0. ,
                0. ,   0. ,   0. ,  -8. ,   0. ,   0. , 304.2, -27.8, -15.4,
                0. ,   0. , -14.8,   0. ,   6.4,  14.4,   0. , -10.6,  55.8,
               23.1,   0. ,  27.9,  34.7,  62. ,  23. ,  41.6,  30.7,  30.5,
               34.9,  40.9,  21.7,  31.3,  19.9,  32.8,  26.2,  14.8,  18.9,
               15.2,  23.8,  21.9, 112.7,  38.4,  34.4])
sign = np.sign(a) # we only care about the sign
# find runs, cred to https://stackoverflow.com/a/54597990/14923227
def count_consecutive(arr, n):
    # pad a with False at both sides for edge cases when array starts or ends with n
    d = np.diff(np.concatenate(([False], arr == n, [False])).astype(int))
    # subtract indices when value changes from False to True from indices where value changes from True to False
    return np.flatnonzero(d == -1) - np.flatnonzero(d == 1)
print("Consecutive Positive results: ", np.max(count_consecutive(sign, 1)))
print("Consecutive Zero results: ", np.max(count_consecutive(sign, 0)))
print("Consecutive Negative results: ", np.max(count_consecutive(sign, -1)))
Output:
Consecutive Positive results:  22
Consecutive Zero results:  21
Consecutive Negative results:  2