docs: def _read_interleaved_numpy(self, f, data_objects):
          """Read interleaved data where all channels have a numpy type"""
  
          log.debug("Reading interleaved data all at once")
          # Read all data into 1 byte unsigned ints first
          all_channel_bytes = data_objects[0].raw_data_width
          if all_channel_bytes == 0:
              all_channel_bytes = sum((o.data_type.size for o in data_objects))
          log.debug("all_channel_bytes: %d", all_channel_bytes)
          number_bytes = int(all_channel_bytes * data_objects[0].number_values)
          combined_data = fromfile(f, dtype=np.uint8, count=number_bytes)
          # Reshape, so that one row is all bytes for all objects
          combined_data = combined_data.reshape(-1, all_channel_bytes)
          # Now set arrays for each channel
          data_pos = 0
          for (i, obj) in enumerate(data_objects):
              byte_columns = tuple(
                  range(data_pos, obj.data_type.size + data_pos))
              log.debug("Byte columns for channel %d: %s", i, byte_columns)
              # Select columns for this channel, so that number of values will
              # be number of bytes per point * number of data points.
              # Then use ravel to flatten the results into a vector.
              object_data = combined_data[:, byte_columns].ravel()
              # Now set correct data type, so that the array length should
              # be correct
              object_data.dtype = (
                  np.dtype(obj.data_type.nptype).newbyteorder(self.endianness))
              obj.tdms_object._update_data(object_data)
              data_pos += obj.data_type.size