Introduce proper type hints for usages of numpy arrays
Created by: gkirgizov
Current type hints are using np.array which is... actually not a even class, but a convenience function for creation of np.ndarray.
But instead of just substituting usages of np.array, it's better to use types from numpy.typing module, which was introduced in Numpy 1.20. (https://numpy.org/devdocs/reference/typing.html#module-numpy.typing). Besides parameterized NDArray[DType] it also introduced ArrayLike and DTypeLike types that can enhance readability of method signatures.