<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _lowest_rowids(self, table, limit):
 """ Gets the lowest available row ids for table insertion. Keeps things tidy! Parameters table: str The name of the table being modified limit: int The number of row ids needed Returns ------- available: sequence An array of all available row ids """

        try:
            t = self.query("SELECT id FROM {}".format(table), unpack=True, fmt='table')
            ids = t['id']
            all_ids = np.array(range(1, max(ids)))
        except TypeError:
            ids = None
            all_ids = np.array(range(1, limit+1))

        available = all_ids[np.in1d(all_ids, ids, assume_unique=True, invert=True)][:limit]

        # If there aren't enough empty row ids, start using the new ones
        if len(available) < limit:
            diff = limit - len(available)
            available = np.concatenate((available, np.array(range(max(ids) + 1, max(ids) + 1 + diff))))

        return available