Skip to content

Commit eaaaa42

Browse files
jorisvandenbosscheKevsterAmp
authored andcommitted
PERF: improve construct_1d_object_array_from_listlike (pandas-dev#60461)
* PERF: improve construct_1d_object_array_from_listlike * use np.fromiter and update annotation
1 parent 918ea57 commit eaaaa42

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

pandas/core/dtypes/cast.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@
8787

8888
if TYPE_CHECKING:
8989
from collections.abc import (
90+
Collection,
9091
Sequence,
91-
Sized,
9292
)
9393

9494
from pandas._typing import (
@@ -1581,7 +1581,7 @@ def _maybe_box_and_unbox_datetimelike(value: Scalar, dtype: DtypeObj):
15811581
return _maybe_unbox_datetimelike(value, dtype)
15821582

15831583

1584-
def construct_1d_object_array_from_listlike(values: Sized) -> np.ndarray:
1584+
def construct_1d_object_array_from_listlike(values: Collection) -> np.ndarray:
15851585
"""
15861586
Transform any list-like object in a 1-dimensional numpy array of object
15871587
dtype.
@@ -1599,11 +1599,9 @@ def construct_1d_object_array_from_listlike(values: Sized) -> np.ndarray:
15991599
-------
16001600
1-dimensional numpy array of dtype object
16011601
"""
1602-
# numpy will try to interpret nested lists as further dimensions, hence
1603-
# making a 1D array that contains list-likes is a bit tricky:
1604-
result = np.empty(len(values), dtype="object")
1605-
result[:] = values
1606-
return result
1602+
# numpy will try to interpret nested lists as further dimensions in np.array(),
1603+
# hence explicitly making a 1D array using np.fromiter
1604+
return np.fromiter(values, dtype="object", count=len(values))
16071605

16081606

16091607
def maybe_cast_to_integer_array(arr: list | np.ndarray, dtype: np.dtype) -> np.ndarray:

0 commit comments

Comments
 (0)