10j in b = np.r_[3,[0]*5,-1:1:10j] means that the step value is imaginary. So here, the slicing starts from -1, upto 1 and the step size is 10j (start:stop:stepj). The value of 10j here is:
((1-(-1)) / 9)= 2 / 9= 0.2222222...
So if you print b, you will see the output to be as follows:
array([ 3. , 0. , 0. , 0. , 0. ,
0. , -1. , -0.77777778, -0.55555556, -0.33333333,
-0.11111111, 0.11111111, 0.33333333, 0.55555556, 0.77777778,
1. ])