As noted in the comments, your numbers are far from random.
I would delete the decimal point first, as it seems that all of your numbers can be described with two digits after the decimal point. So just multiply all numbers by 100 when compressing and divide by 100 when unpacking.
Secondly, I would have a delta number code by subtracting the last number from each. The first number does not change. The reconstruction is obvious. So you get:
22419, 138, 52, -335, -54, -9, 103, 31742, -160, 118, 30, -20399, 202, 231, -18405, 329, -146, -233, -10115, 125, -145, -143
for coding. Now we get somewhere. We usually have small deltas, with a rare long jump. Then use variable-length integers to encode them. Then the delta histogram would be useful for building this code well. A simple example would be 7 bits per byte, with the most significant bit indicating the end of an integer. A more complex bit-level scheme may be more optimal, depending on the probability distribution.
source share