Can you not just pass in your realData array to CDFlib, to avoid the copy in the first place? Something like:
cimport numpy as np
import numpy as np
cdef np.ndarray realData = np.zeros(np_shape, dtype='d')
status = CDFlib(
SELECT_, zVAR_RECCOUNT_, numRecs,
NULL_)
status = CDFlib(
GET_, zVAR_HYPERDATA_, <double*> realData.data,
NULL_)