diff --git a/pandas/core/array_algos/quantile.py b/pandas/core/array_algos/quantile.py index b2f78182b9bf0..8a920d1849bb3 100644 --- a/pandas/core/array_algos/quantile.py +++ b/pandas/core/array_algos/quantile.py @@ -91,7 +91,7 @@ def quantile_with_mask( if is_empty: # create the array of na_values # 2d len(values) * len(qs) - flat = np.array([fill_value] * len(qs)) + flat = np.full(len(qs), fill_value) result = np.repeat(flat, len(values)).reshape(len(values), len(qs)) else: result = _nanquantile( diff --git a/pandas/core/arrays/_ranges.py b/pandas/core/arrays/_ranges.py index 600ddc7f717a8..88f5ac4ebdea4 100644 --- a/pandas/core/arrays/_ranges.py +++ b/pandas/core/arrays/_ranges.py @@ -18,6 +18,8 @@ iNaT, ) +from pandas.core.construction import range_to_ndarray + if TYPE_CHECKING: from pandas._typing import npt @@ -82,17 +84,7 @@ def generate_regular_range( "at least 'start' or 'end' should be specified if a 'period' is given." ) - with np.errstate(over="raise"): - # If the range is sufficiently large, np.arange may overflow - # and incorrectly return an empty array if not caught. - try: - values = np.arange(b, e, stride, dtype=np.int64) - except FloatingPointError: - xdr = [b] - while xdr[-1] != e: - xdr.append(xdr[-1] + stride) - values = np.array(xdr[:-1], dtype=np.int64) - return values + return range_to_ndarray(range(b, e, stride)) def _generate_range_overflow_safe( diff --git a/pandas/core/dtypes/dtypes.py b/pandas/core/dtypes/dtypes.py index c0587d36bcb5a..59c4f07f48411 100644 --- a/pandas/core/dtypes/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -513,7 +513,7 @@ def _hash_categories(self) -> int: [cat_array, np.arange(len(cat_array), dtype=cat_array.dtype)] ) else: - cat_array = np.array([cat_array]) + cat_array = cat_array.reshape(1, len(cat_array)) combined_hashed = combine_hash_arrays(iter(cat_array), num_items=len(cat_array)) return np.bitwise_xor.reduce(combined_hashed) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 8c9c92594ebe7..5b718f0ce2a29 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -4370,11 +4370,12 @@ def post_processor( return vals - qs = np.array(q, dtype=np.float64) - pass_qs: np.ndarray | None = qs if is_scalar(q): qs = np.array([q], dtype=np.float64) - pass_qs = None + pass_qs: None | np.ndarray = None + else: + qs = np.asarray(q, dtype=np.float64) + pass_qs = qs ids = self._grouper.ids ngroups = self._grouper.ngroups diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 878170c8377dc..a4b92e70427ce 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -2686,9 +2686,9 @@ def _get_codes_for_sorting(self) -> list[Categorical]: a valid valid """ - def cats(level_codes): + def cats(level_codes: np.ndarray) -> np.ndarray: return np.arange( - np.array(level_codes).max() + 1 if len(level_codes) else 0, + level_codes.max() + 1 if len(level_codes) else 0, dtype=level_codes.dtype, ) diff --git a/pandas/core/tools/datetimes.py b/pandas/core/tools/datetimes.py index 0e91bfa99e887..86c7316320f44 100644 --- a/pandas/core/tools/datetimes.py +++ b/pandas/core/tools/datetimes.py @@ -418,7 +418,7 @@ def _convert_listlike_datetimes( arg, _ = maybe_convert_dtype(arg, copy=False, tz=libtimezones.maybe_get_tz(tz)) except TypeError: if errors == "coerce": - npvalues = np.array(["NaT"], dtype="datetime64[ns]").repeat(len(arg)) + npvalues = np.full(len(arg), np.datetime64("NaT", "ns")) return DatetimeIndex(npvalues, name=name) raise diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 37dcf3bc14282..9ea825ad4e44d 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -1186,7 +1186,7 @@ def homogeneous_func(values: np.ndarray): return values.copy() def calc(x): - additional_nans = np.array([np.nan] * offset) + additional_nans = np.full(offset, np.nan) x = np.concatenate((x, additional_nans)) return func( x,