Funzionamento
Questa pagina descrive il flusso interno di median e l’ordine con cui vengono applicate validazione e calcolo finale della mediana. A differenza di Panoramica, qui l’obiettivo non e ripetere la firma della funzione, ma mostrare come il risultato viene costruito davvero.
I frammenti seguenti sono estratti dal codice attuale di src/mespy/stats_utils.py. L’unico helper coinvolto e _as_float_vector, che definisce il contratto numerico di ingresso prima della delega finale a NumPy.
Sequenza di esecuzione
L’implementazione segue questa sequenza:
Converte
xin un vettorefloat64monodimensionale e finito con_as_float_vector("x", x).Rifiuta input vuoti, multidimensionali o con valori non finiti direttamente nel validatore condiviso.
Passa il vettore validato a
np.median(...).Converte il risultato finale in
floatPython.
Validazione e delega a NumPy
def median(x: ArrayLike) -> float:
values = _as_float_vector("x", x)
return float(np.median(values))
median e la funzione piu lineare dell’intero modulo.
Non contiene rami alternativi, parametri opzionali o formule riscritte a mano.
Tutta la robustezza dell’API e concentrata nella prima riga:
_as_float_vector(...)impone chexsia un array numerico, monodimensionale, non vuoto e composto solo da valori finiti.Una volta ottenuto
values, la funzione non aggiunge altra logica statistica: delega il calcolo della mediana anp.median(values).Il cast finale a
floatuniforma il tipo di ritorno dell’API pubblica, evitando di esporre uno scalare NumPy.
Casi limite e comportamento pratico
Questa funzione non implementa politiche speciali oltre alla validazione iniziale.
Se
xe vuoto, il fallimento avviene prima di chiamarenp.median(...), quindi il package evita warning onansilenziosi.Se
xcontieneNaNo infiniti, il rifiuto avviene sempre nel validatore comune, in modo coerente con tutte le altre funzioni distats_utils.Se
xha un numero pari di elementi, la scelta su come combinare i due valori centrali e interamente quella di NumPy, perchemespynon la ridefinisce.Proprio per questa struttura minimale, il comportamento di
mediane facile da leggere: validazione comune all’ingresso, poi singola delega al motore numerico sottostante.