How to use numpy in optional typing

Question:

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>.
Asked By: Michelrandahl

||

Answers:

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.

Answered By: shx2
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.