Hmmmm, checking `is void` does not seems to work:
```
In [36]: a
Out[36]: array(rational(1,2), dtype=rational)

In [37]: a.dtype.type is np.void
Out[37]: False

In [38]: a.dtype.kind == 'V'
Out[38]: True
```
This is indeed identical to another PR, which tried the opposite. Instead of assigning the dtype where necessary, it didn't do it for object arrays where it is known it is not necessary ;).