Как увеличить дисперсию ряда (массива чисел)? Суть задачи в следующем, есть массив чисел (скажем 70 элементов), все типа byte (от 0 до 255), проблема в том что данные отличаются недостаточно сильно, то есть к примеру минимальное 1, максимальное 20 (но может быть и 255 в конкретном случае), хотелось бы увеличить "контрастность" чисел так чтобы максимальное осталось таким как было (не увеличилось) а остальные изменились, маленькие стали еще меньше средние уменьшились, но не слишком сильно, чтобы это было равномерно. Пытался сообразить какие манипуляции с этими данными, чтобы такое провернуть, но не могу математически сформулировать, тут скорее всего нужно применить тригонометрические функции, но с ней у меня плоховато) В гуглах ничего похожего не встретил, если кто знаком или хорошо в этом разбирается, есть идеи как можно массив обработать?
Одним из возможных способов увеличения разброса значений в массиве чисел является применение функции, которая будет изменять каждый элемент массива в зависимости от его текущего значения.
Например, можно использовать следующую математическую функцию для изменения значений в массиве:
import numpy as np # Генерирование случайного массива чисел array = np.random.randint(0, 256, 70) # Функция для увеличения разброса значений def increase_variance(x): return np.sin(x/256 * np.pi) * 256 # Применение функции к каждому элементу массива new_array = np.array([increase_variance(x) for x in array]) print(new_array)
В данном примере используется функция np.sin(x/256 * np.pi) * 256, которая изменяет значения элементов массива таким образом, что маленькие значения становятся еще меньше, а средние уменьшаются равномерно. Путем экспериментов с этой и другими функциями вы можете найти наиболее подходящий способ увеличения разброса значений в вашем массиве.
Одним из возможных способов увеличения разброса значений в массиве чисел является применение функции, которая будет изменять каждый элемент массива в зависимости от его текущего значения.
Например, можно использовать следующую математическую функцию для изменения значений в массиве:
import numpy as np# Генерирование случайного массива чисел
array = np.random.randint(0, 256, 70)
# Функция для увеличения разброса значений
def increase_variance(x):
return np.sin(x/256 * np.pi) * 256
# Применение функции к каждому элементу массива
new_array = np.array([increase_variance(x) for x in array])
print(new_array)
В данном примере используется функция np.sin(x/256 * np.pi) * 256, которая изменяет значения элементов массива таким образом, что маленькие значения становятся еще меньше, а средние уменьшаются равномерно. Путем экспериментов с этой и другими функциями вы можете найти наиболее подходящий способ увеличения разброса значений в вашем массиве.