docs: def transpose(self):
          """ Create a matrix, transpose it, and then create a new FVM
  
          :raise NotImplementedError: if all existing rows aren't keyed
          :return: a new FVM rotated from self
          """
          if len(self._row_name_list) != len(self._rows):
              raise NotImplementedError("You can't rotate a FVM that doesn't have all rows keyed")
  
          fvm = FeatureVectorMatrix(default_value=self._default_value, default_to_hashed_rows=self._default_to_hashed_rows)
          fvm._update_internal_column_state(self._row_name_list)
          for idx, r in enumerate(self.get_matrix().transpose()):
              fvm.add_row(r.tolist(), self._column_name_list[idx])
  
          return fvm