numpy vs native Python - most efficient way
In general, it probably matters most (efficiency-wise) to avoid conversions between the two. If you're mostly using non-numpy functions on data, then they'll be internally operating using standard Python data types, and thus using numpy arrays would be inefficient due to the need to convert back and forth.
Similarly, if you're using a lot of numpy functions to manipulate data, transforming it all back to basic Python types in between would also be inefficient.

As far as choosing functions goes, use whichever one was designed to operate on the form your data is already in - e.g. if you already have a numpy array, use the numpy functions on it; similarly, if you have a basic Python data type, use the Python functions on it. numpy's functions are going to be optimized for working with numpy's data types.
For a lot of functions, it is possible to use either native Python or numpy to proceed. 
This is the case for math functions, that are available with Python native import math, but also with numpy methods. This is also the case when it comes to arrays, with narray from numpy and pythons list comprehensions, or tuples. 
I have two questions relative to these features that are in Python and also in numpy

in general, if method is available in native Python AND numpy, which of both solutions would you prefer ? In terms of efficiency ? Is it different and how Python and numpy would differ in their proceeding?
More particularly, regarding arrays, and basic functions that are dealing with arrays, like sort, concatenate..., which solution is more efficient ? What makes the efficiency of the most efficient solution?

This is very open and general question. I guess that will not impact my code greatly, but I am just wondering.