2016-02-10 14 views
10

Diciamo che voglio fare una funzione che prende una funzione lambda (Callable) come parametro dove la funzione lambda prende un vettore come input (definito come array numpy o numpy) e restituisce un nuovo vettore. Come si dichiara la firma del tipo per il chiamabile con tipi numpy?Come usare numpy nella digitazione opzionale

Il mio primo tentativo di simile a questa:

def some_func(calc_new_vector: Callable[[np.array], np.array], ...other-params...) -> SomeType: 
    ...do stuff... 
    ...return... 

Tuttavia, questo si traduce in un errore durante l'esecuzione l'interprete:

TypeError: Callable[[arg, ...], result]: each arg must be a type. Got <built-in function array>. 

risposta

8

Confusamente, np.array è una funzione utile per creare array numpy. Non è l'attuale type degli array creati.

Il tipo è np.ndarray.

Quindi, sostituire np.array con np.ndarray. Questo dovrebbe risolvere il problema.

+0

Grazie. Recentemente ho deciso di usare la funzione 'type (...)' per stampare i tipi esatti di variabili su cui sono incerto. A volte richiede un po 'di lavoro investigativo quando si usano librerie come Matplotlib, ma almeno mi ha aiutato a trovare i tipi fino ad ora in modo da poterli inserire nelle mie dichiarazioni di funzione. – Michelrandahl

Problemi correlati