Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/pandas/core/array_algos/transforms.py: 10%
20 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1"""
2transforms.py is for shape-preserving functions.
3"""
5from __future__ import annotations
7import numpy as np
10def shift(values: np.ndarray, periods: int, axis: int, fill_value) -> np.ndarray:
11 new_values = values
13 if periods == 0 or values.size == 0:
14 return new_values.copy()
16 # make sure array sent to np.roll is c_contiguous
17 f_ordered = values.flags.f_contiguous
18 if f_ordered:
19 new_values = new_values.T
20 axis = new_values.ndim - axis - 1
22 if new_values.size:
23 new_values = np.roll(
24 new_values,
25 np.intp(periods),
26 axis=axis,
27 )
29 axis_indexer = [slice(None)] * values.ndim
30 if periods > 0:
31 axis_indexer[axis] = slice(None, periods)
32 else:
33 axis_indexer[axis] = slice(periods, None)
34 new_values[tuple(axis_indexer)] = fill_value
36 # restore original order
37 if f_ordered:
38 new_values = new_values.T
40 return new_values