I think `self.time = np.asarray(self.time, np.float64)` would do the same thing. But, do we have only numpy arrays at this stage?

The if part is essentially redundant, since astype(np.float64) doesn't create a copy if it's already the correct type.

(just checked some details:  numpy 1.6.1 which I have open right now
x.astype(x.dtype) creates a new array with the same memory (a new view), 
np.asarray(x, x.dtype) is a no-op and returns x
)