David,
I'm concluding that the .astype(np.uint8) is applied after the array is
constructed, instead of during the process.
That is how python works in general. astype is a method of an array, so randint needs to return the array before there is something with an astype method to call. A dtype keyword arg to randint, on the otherhand, would influence the construction of the array.
Elliot