Skip to content

Commit a72f8e4

Browse files
authored
cpu_bin with binary search (#760)
1 parent af42544 commit a72f8e4

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

xrspatial/classify.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,23 @@ def _cpu_bin(data, bins, new_values):
145145
val_bin = -1
146146

147147
# find bin
148-
for b in range(0, nbins):
149-
150-
# first bin
151-
if b == 0:
152-
if val <= bins[b]:
153-
if np.isfinite(val):
154-
val_bin = b
155-
break
156-
else:
157-
if val > bins[b - 1] and val <= bins[b]:
158-
if np.isfinite(val):
159-
val_bin = b
160-
break
148+
if np.isfinite(val):
149+
if val <= bins[0]:
150+
val_bin = 0
151+
elif val <= bins[nbins - 1]:
152+
start = 0
153+
end = nbins - 1
154+
mid = (end + start) // 2
155+
while start <= end:
156+
if bins[mid] < val:
157+
start = mid + 1
158+
elif val > bins[mid - 1]:
159+
break
160+
else:
161+
end = mid - 1
162+
mid = (end + start) // 2
163+
164+
val_bin = mid
161165

162166
if val_bin > -1:
163167
out[y, x] = new_values[val_bin]

0 commit comments

Comments
 (0)