Only convert array if needed

This is a fix for https://github.com/scipy/scipy/issues/4203
1) if it's anticipated that `numpy_array` argument of this function can be a numpy matrix or even a scipy.sparse matrix, can we please have a different name for this argument
2) it seems that this new function is only used for converting (or not converting) index arrays and one instance of `self.data`. Are any of these likely to be anything but a plain numpy array?  I'm not familiar with this code, so I might very well be missing a bigger picture