Возможно, я не правильно понял ваш вопрос, но для меня это может быть интерпретировано как проблема интервальной интерполяции.
Вы можете использовать функцию линейной интерполяции из numpy ( np.interp ):
# re-scale all array values in [-1, 1] interval
arr_min = arr.min()
arr_max = arr.max()
arr_scaled = np.interp(arr, (arr_min, arr_max), (-1, +1))
# in one line
arr_scaled = np.interp(arr, (arr.min(), arr.max()), (-1, +1))
Это также работает с массивами numpy, где arr.ndim> 1.
Надеюсь, это поможет.