Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH] Improve vectorization performance #4195

Merged
merged 8 commits into from Feb 12, 2023
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 23 additions & 3 deletions sktime/datatypes/_vectorize.py
Expand Up @@ -285,9 +285,9 @@ def _get_X_at_index(self, row_ind=None, col_ind=None, X=None):
elif row_ind is None:
res = X[col_ind]
else:
res = X[col_ind].loc[row_ind]
res = X.loc[row_ind, col_ind]
res = _enforce_index_freq(res)
return res
return res.copy()
fkiraly marked this conversation as resolved.
Show resolved Hide resolved

def _get_item_indexer(self, i: int, X=None):
"""Get the i-th indexer from _iter_indices.
Expand All @@ -312,7 +312,27 @@ def _get_item_indexer(self, i: int, X=None):

def as_list(self):
"""Shorthand to retrieve self (iterator) as list."""
return list(self)
if (
isinstance(self.X_multiindex.index, pd.MultiIndex)
and self.iterate_as == "Series"
fkiraly marked this conversation as resolved.
Show resolved Hide resolved
and not self.iterate_cols
):

def _convert(series):
series = series.droplevel(
list(range(self.X_multiindex.index.nlevels - 1))
)
series = _enforce_index_freq(series)
return series

return [
_convert(series)
for _, series in self.X_multiindex.groupby(
level=list(range(self.X_multiindex.index.nlevels - 1))
)
]
else:
return list(self)

def reconstruct(
self,
Expand Down