Проверить nptyping .Он предлагает подсказки типов для массивов с номерами.
В вашем случае вы получите:
import numpy as np
from nptyping import Array
def foo(array: Array[np.float64]) -> str:
...
Вы также можете проверить свои экземпляры:
arr = np.array([[1.0, 2.0],
[3.0, 4.0],
[5.0, 6.0]])
isinstance(arr, Array[np.float64, 3, 2]) # True