I have a list of decimal numbers as follows:
[-23.5, -12.7, -20.6, -11.3, -9.2, -4.5, 2, 8, 11, 15, 17, 21]
I need to normalize this list to fit into the range [-5,5]
.
How can I do it in python?
We can actually use this formula to normalize a dataset between 0 and any number: zi = (xi – min (x)) / (max (x) – min (x)) * Q where Q is the maximum number you want for your normalized data values.
if your list has negative numbers, this is how you would normalize it a = range (-30,31,5) norm = [ (float (i)-min (a))/ (max (a)-min (a)) for i in a]
1st transform the numbers to have a range from 0 to z. 2nd transform the range 0 to z into a range 0 to 1. 3rd transform the range 0 to 1 to x n e w to y n e w. Subtract the minimum value from each number in your array. This will force the minimum to become 0. Note that it works even if your data has negative numbers!
The equation of calculation of normalization can be derived by using the following simple four steps: Firstly, identify the minimum and maximum value in the data set, and they are denoted by x minimum and x maximum. Next, calculate the range of the data set by deducting the minimum value from the maximum value.
To get the range of input is very easy:
old_min = min(input)
old_range = max(input) - old_min
Here's the tricky part. You can multiply by the new range and divide by the old range, but that almost guarantees that the top bucket will only get one value in it. You need to expand your output range so that the top bucket is the same size as all the other buckets.
new_min = -5
new_range = 5 + 0.9999999999 - new_min
output = [floor((n - old_min) / old_range * new_range + new_min) for n in input]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With