You can call into dynamic languages such as CPython using pythonnet:
dynamic np = Py.Import("numpy")
You can cast generics to dynamic when applying numerical operators on them. This provides type safety and avoids limitations of generics. This is in essence *duck typing: