Lets say I want to make a function which takes a lambda function (Callable) as parameter where the lambda function takes a vector as input (defined as numpy array or numpy matrix) and returns a new vector. How do I declare the type signature for the Callable with numpy types?
My initial attempt looks something like this:
def some_func(calc_new_vector: Callable[[np.array], np.array], ...other-params...) -> SomeType:
...do stuff...
...return...
However, this results in an error when running the interpreter:
TypeError: Callable[[arg, ...], result]: each arg must be a type. Got <built-in function array>.
Confusingly, np.array
is a function useful for creating numpy arrays. It isn't the actual type
of the arrays created.
The type is np.ndarray
.
So, replace np.array
with np.ndarray
. That should fix the problem.