It looks like when you print the array, you get this -
array([-1.00000000e-03, -9.00000000e-04, -8.00000000e-04, -7.00000000e-04,
-6.00000000e-04, -5.00000000e-04, -4.00000000e-04, -3.00000000e-04,
-2.00000000e-04, -1.00000000e-04, 4.33680869e-19, 1.00000000e-04,
2.00000000e-04, 3.00000000e-04, 4.00000000e-04, 5.00000000e-04,
6.00000000e-04, 7.00000000e-04, 8.00000000e-04, 9.00000000e-04,
1.00000000e-03, 1.10000000e-03])
It looks like there are some rounding issues when -0.001 gets incremented by 0.0001 suggested by the value 4.33680869e-19 when it should be 0. This means that each subsequent value in the array is slightly less than what is shown. That is why the last value, 0.0011, is included in the array when it shouldn't. This is what is giving you the shape mismatch.
I recommend doing this so that rounding doesn't become an issue.
x = np.arange(-10,11,1)
x = x/10000
x.shape # gets (21,)
print(x)