why not use numpy for numerical computation but use c/c++ dynamic lib instead?

Because numpy does not have GPU support.

For extending python with c/c++, which is the best choice, cffi, ctype, cython?

Internally we use our own C wrapper engine: https://github.com/pytorch/pytorch/tree/master/tools/cwrap 144
For end-users, we recommend that they use CFFI https://github.com/pytorch/extension-ffi 155