tengo una lista de valores int:Cómo normalizar una lista de valores int
List<int> histogram;
¿Cómo normalizar todos los valores para que el valor máximo de la lista es siempre el 100?
tengo una lista de valores int:Cómo normalizar una lista de valores int
List<int> histogram;
¿Cómo normalizar todos los valores para que el valor máximo de la lista es siempre el 100?
Iterar sin embargo, encontrar el valor máximo (lo llaman MAXVAL
), a continuación, recorrer una vez más y se multiplica cada valor de la lista por (100/MAXVAL)
.
var ratio = 100.0/list.Max();
var normalizedList = list.Select(i => i * ratio).ToList();
Si tiene una lista de números estrictamente positivos, entonces la respuesta de Dav le quedará bien.
Si la lista puede ser cualquier número en absoluto, entonces usted necesita para normalizar también a un límite inferior.
Suponiendo un límite superior de 100 y un límite inferior de 0, querrá algo como esto ...
var max = list.Max();
var min = list.Min();
var range = (double)(max - min);
var normalised
= list.Select(i => 100 * (i - min)/range)
.ToList();
Manejo del caso en el que min == max
se deja como ejercicio para el lector ...
para normalizar un conjunto de números que puede contener valores negativos,
y definir la gama de la escala normalizada:
List<int> list = new List<int>{-5,-4,-3,-2,-1,0,1,2,3,4,5};
double scaleMin = -1; //the normalized minimum desired
double scaleMax = 1; //the normalized maximum desired
double valueMax = list.Max();
double valueMin = list.Min();
double valueRange = valueMax - valueMin;
double scaleRange = scaleMax - scaleMin;
IEnumerable<double> normalized =
list.Select (i =>
((scaleRange * (i - valueMin))
/valueRange)
+ scaleMin);
¿y los números negativos? – Kobi
ah, y el valor máximo puede ser 0, por lo que tiene 100/0. – Kobi
Sí, probablemente debería verificarse el caso límite, aunque no existe una buena forma de "normalizar" una lista que es cero. – Amber