docs: def read_array(self, dtype, count=-1, out=None):
          """Return numpy array from file in native byte order."""
          fh = self._fh
          dtype = numpy.dtype(dtype)
  
          if count < 0:
              size = self._size if out is None else out.nbytes
              count = size // dtype.itemsize
          else:
              size = count * dtype.itemsize
  
          result = numpy.empty(count, dtype) if out is None else out
  
          if result.nbytes != size:
              raise ValueError('size mismatch')
  
          n = fh.readinto(result)
          if n != size:
              raise ValueError('failed to read %i bytes' % size)
  
          if not result.dtype.isnative:
              if not dtype.isnative:
                  result.byteswap(True)
              result = result.newbyteorder()
          elif result.dtype.isnative != dtype.isnative:
              result.byteswap(True)
  
          if out is not None:
              if hasattr(out, 'flush'):
                  out.flush()
  
          return result