Przejdź do treści

Numpy. Funkcja np.searchsorted(). W którym dniu kampanii przekroczono budżet 20 000 PLN.

Na czym to polega w sklepie

Funkcja np.searchsorted zwraca indeksy, gdzie elementy powinny trafić w posortowaną tablicę, żeby zachować porządek. Przy rosnącym cumsum(spend) szybko znajdziesz pierwszy dzień, gdy narastający wydatek przekroczył limit.

Przykład ze sklepu internetowego

Masz posortowane daty i skumulowany spend kampanii. Budżet cap: 20 000 PLN. Szukasz pierwszego indeksu po przekroczeniu:

import numpy as np

cumulative_spend = np.array([2000, 5500, 9800, 14200, 19800, 23500, 28100])
budget_cap = 20000

idx = np.searchsorted(cumulative_spend, budget_cap, side="left")
# idx=5 - pierwszy dzień gdy cumsum >= 20000 (wartość 23500)

days_over = len(cumulative_spend) - idx

Co zrobić po stronie biznesu

  • Mapowanie AOV klienta na segment (progi posortowane) - bucket VIP bez if-else.
  • Znalezienie percentyla przez searchsorted na posortowanym wektorze (szybki P90).
  • Pułapka: tablica musi być posortowana rosnąco - searchsorted na datach w losowej kolejności da bzdurę.

W skrócie

searchsorted to binsearch wektorowy. Łącz z cumsum do pacingu budżetu - jeden indeks zamiast pętli po dniach.