Skip to content

Commit ebc9327

Browse files
PERF: use arr.size instead of np.prod(arr.shape) in _can_use_numexpr (#39825)
1 parent 08d349e commit ebc9327

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

pandas/core/array_algos/transforms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def shift(values: np.ndarray, periods: int, axis: int, fill_value) -> np.ndarray
1919
new_values = new_values.T
2020
axis = new_values.ndim - axis - 1
2121

22-
if np.prod(new_values.shape):
22+
if new_values.size:
2323
new_values = np.roll(new_values, ensure_platform_int(periods), axis=axis)
2424

2525
axis_indexer = [slice(None)] * values.ndim

pandas/core/computation/expressions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def _can_use_numexpr(op, op_str, a, b, dtype_check):
8080
if op_str is not None:
8181

8282
# required min elements (otherwise we are adding overhead)
83-
if np.prod(a.shape) > _MIN_ELEMENTS:
83+
if a.size > _MIN_ELEMENTS:
8484
# check for dtype compatibility
8585
dtypes: Set[str] = set()
8686
for o in [a, b]:

pandas/core/dtypes/cast.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,7 @@ def maybe_cast_to_datetime(value, dtype: Optional[DtypeObj]):
15331533
value = iNaT
15341534

15351535
# we have an array of datetime or timedeltas & nulls
1536-
elif np.prod(value.shape) or not is_dtype_equal(value.dtype, dtype):
1536+
elif value.size or not is_dtype_equal(value.dtype, dtype):
15371537
_disallow_mismatched_datetimelike(value, dtype)
15381538

15391539
try:

pandas/core/dtypes/missing.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ def array_equivalent(
436436

437437
# NaNs can occur in float and complex arrays.
438438
if is_float_dtype(left.dtype) or is_complex_dtype(left.dtype):
439-
if not (np.prod(left.shape) and np.prod(right.shape)):
439+
if not (left.size and right.size):
440440
return True
441441
return ((left == right) | (isna(left) & isna(right))).all()
442442

0 commit comments

Comments
 (0)