@@ -794,68 +794,14 @@ def backfill(ndarray[algos_t] old, ndarray[algos_t] new, limit=None) -> ndarray:
794
794
return indexer
795
795
796
796
797
- @cython.boundscheck(False )
798
- @cython.wraparound(False )
799
797
def backfill_inplace(algos_t[:] values , uint8_t[:] mask , limit = None ):
800
- cdef:
801
- Py_ssize_t i, N
802
- algos_t val
803
- uint8_t prev_mask
804
- int lim, fill_count = 0
805
-
806
- N = len (values)
807
-
808
- # GH#2778
809
- if N == 0 :
810
- return
811
-
812
- lim = validate_limit(N, limit)
813
-
814
- val = values[N - 1 ]
815
- prev_mask = mask[N - 1 ]
816
- for i in range (N - 1 , - 1 , - 1 ):
817
- if mask[i]:
818
- if fill_count >= lim:
819
- continue
820
- fill_count += 1
821
- values[i] = val
822
- mask[i] = prev_mask
823
- else :
824
- fill_count = 0
825
- val = values[i]
826
- prev_mask = mask[i]
798
+ pad_inplace(values[::- 1 ], mask[::- 1 ], limit = limit)
827
799
828
800
829
- @ cython.boundscheck (False )
830
- @ cython.wraparound (False )
831
801
def backfill_2d_inplace (algos_t[:, :] values ,
832
802
const uint8_t[:, :] mask ,
833
803
limit = None ):
834
- cdef:
835
- Py_ssize_t i, j, N, K
836
- algos_t val
837
- int lim, fill_count = 0
838
-
839
- K, N = (< object > values).shape
840
-
841
- # GH#2778
842
- if N == 0 :
843
- return
844
-
845
- lim = validate_limit(N, limit)
846
-
847
- for j in range (K):
848
- fill_count = 0
849
- val = values[j, N - 1 ]
850
- for i in range (N - 1 , - 1 , - 1 ):
851
- if mask[j, i]:
852
- if fill_count >= lim:
853
- continue
854
- fill_count += 1
855
- values[j, i] = val
856
- else :
857
- fill_count = 0
858
- val = values[j, i]
804
+ pad_2d_inplace(values[:, ::- 1 ], mask[:, ::- 1 ], limit)
859
805
860
806
861
807
@ cython.boundscheck (False )
0 commit comments