docs: def find_labels(self,key,find_in_name=True,find_in_units=False):
          """
              Takes a string or a function to find a set of label indizes 
              that match.
              If the string starts with a '~', the label only has to contain the string.
          """
          if type(key) is str:
              found_keys = []
              if key.startswith('~'):
                  for label_no,label in enumerate(self.labels):
                      if find_in_name and key[1:] in label.name:
                          found_keys.append(label_no)
                      if find_in_units and key[1:] in label.units:
                          found_keys.append(label_no)
              else:
                  for label_no,label in enumerate(self.labels):
                      if find_in_name and key == label.name:
                          return [label_no]
                      if find_in_units and key == label.units:
                          return [label_no]
              return found_keys
          if hasattr(key, '__call__'):
              found_keys = []
              for label_no,label in enumerate(self.labels):
                      if key(label):
                          found_keys.append(label_no)
              return found_keys
          if type(key) is int:
              return [key] if key < self.matrix.shape[1] else []
          return [key]