import numpy as np
import random
a = np.zeros(128)
# a[:] = random.random()
for idx in range(len(a)):
a[idx] = random.random() * 32
print(a)
a -= np.min(a)
a /= np.max(a)
print(a)
[21.69105142 25.72890239 29.01647141 25.63210082 22.04566692 13.5044074 11.1683822 8.24892717 10.39251578 9.72646774 8.98570553 22.45445427 10.03751237 13.61069492 11.62789597 14.53903076 2.78697113 26.40423555 16.57793995 16.90733611 6.91385313 1.67579576 23.75692982 12.16704539 8.25555564 22.91688269 5.76720808 14.18195559 2.67224843 13.73695144 9.58878316 10.79048053 19.44631005 22.81664958 31.60514838 5.24561525 11.59750503 15.89393728 9.98458583 2.84969215 31.96432883 16.91351334 0.91304174 18.77998448 29.14676905 28.99647487 8.75326486 29.67161148 24.4474046 21.19138682 15.8934629 29.71638863 8.65830993 29.86490781 23.72407311 7.19545471 12.24386381 8.23495181 7.05380371 0.54461269 0.87260722 10.23900881 2.03520809 26.72971507 12.10261008 5.13521825 5.1665402 7.24822789 10.35947841 0.94084446 11.76597421 14.3993391 23.50977288 10.85472443 17.04423077 21.28962971 30.3705205 1.0933283 18.37063672 0.94290565 0.12547786 0.05469595 20.8228789 1.35346216 1.3424813 29.98407261 21.55345998 8.88986185 26.1979377 4.25636298 25.78306193 17.76659194 6.24753321 24.98874032 21.80853807 3.7244782 20.89263574 18.52858485 29.28791612 0.73026379 21.90552577 26.26271092 15.84185316 7.820566 1.67347562 15.84183476 30.15849041 2.58971802 25.80084561 17.16301205 5.71146299 8.02780785 4.62383149 24.45081956 4.79689226 17.05475128 3.80235419 13.25610283 13.92387441 30.22924704 18.51868834 15.81745843 2.00916688 17.32825087 25.37194591 28.87725764 27.01644673 7.63984955] [0.67805091 0.80459109 0.90761857 0.80155748 0.68916402 0.42149377 0.34828625 0.25679491 0.32397176 0.30309881 0.27988444 0.70197481 0.31284648 0.42482466 0.36268672 0.45391731 0.0856254 0.82575502 0.51781367 0.52813645 0.21495569 0.05080283 0.74279243 0.37958285 0.25700263 0.71646662 0.17902156 0.44272711 0.08203017 0.42878135 0.29878398 0.33644337 0.60770408 0.71332546 0.98874382 0.16267562 0.36173431 0.49637805 0.31118784 0.08759099 1. 0.52833003 0.02689927 0.58682244 0.91170191 0.90699191 0.27260009 0.92814968 0.76443088 0.66239217 0.49636318 0.92955293 0.26962435 0.9342073 0.74176275 0.22378066 0.38199023 0.25635694 0.21934153 0.01535326 0.02563211 0.31916108 0.06206628 0.83595506 0.37756355 0.15921594 0.16019753 0.22543449 0.32293642 0.02777056 0.36701388 0.44953959 0.73504691 0.33845668 0.53242652 0.66547095 0.95005244 0.03254918 0.57399409 0.02783516 0.0022182 0. 0.65084368 0.04070138 0.04035726 0.93794174 0.673739 0.27688084 0.81928996 0.13167394 0.80628837 0.55506424 0.19407422 0.78139553 0.68173276 0.11500547 0.65302976 0.57894395 0.91612524 0.02117128 0.68477221 0.82131985 0.49474581 0.24337071 0.05073013 0.49474523 0.94340773 0.07944379 0.80684569 0.53614895 0.17727459 0.24986536 0.14318985 0.7645379 0.14861331 0.53275622 0.11744598 0.41371228 0.43463924 0.94562514 0.57863381 0.49398132 0.06125019 0.54132728 0.79340461 0.90325582 0.8449408 0.23770733]
import math
class StatsList:
"""
Stores a list of numbers and provides some simple statistics.
"""
lst: list[float]
sum: float
product: float
min: float
max: float
def __init__(self) -> None:
self.lst = []
self.sum = 0.0
self.product = 1.0
self.min = 0.0
self.max = 0.0
def append(self, val: float) -> None:
self.lst.append(val)
self.sum += val
self.product *= val
if len(self.lst) == 1:
self.min = val
self.max = val
else:
if val < self.min:
self.min = val
if val > self.max:
self.max = val
def mean(self) -> float:
return self.sum / len(self.lst)
def geometricMean(self) -> float:
return self.product ** (1/len(self.lst))
x = StatsList()
print(x.lst)
x.append(24601.0)
print(x.lst)
x.append(42.0)
print(x.lst)
print(x.sum, x.product, x.mean(), x.geometricMean())
x.append(-math.pi)
print(x.sum, x.product, x.mean(), x.geometricMean())
print(x.min, x.max)
print(x)
[] [24601.0] [24601.0, 42.0] 24643.0 1033242.0 12321.5 1016.485120402655 24639.85840734641 -3246025.476580425 8213.286135782137 (74.03219834333919+128.22752892667992j) -3.141592653589793 24601.0 <__main__.StatsList object at 0x7f17377878e0>
import csv
def csvStats(filename: str) -> dict[str, StatsList]:
r = {}
with open(filename) as ifh:
rdr = csv.DictReader(ifh)
for row in rdr:
for key in row:
if not (key in r):
r[key] = StatsList()
r[key].append(float(row[key]))
return r
stats = csvStats("nino34.csv")
for key in stats:
print(f"{key} mean: {stats[key].mean()}, " +
f"{key} min: {stats[key].min}, {key} max: {stats[key].max}")
YR mean: 1987.3762376237623, YR min: 1950.0, YR max: 2025.0 MON mean: 6.485148514851486, MON min: 1.0, MON max: 12.0 TOTAL mean: 26.906149614961517, TOTAL min: 24.25, TOTAL max: 29.41 ClimAdjust mean: 26.894906490649106, ClimAdjust min: 26.01, ClimAdjust max: 27.94 ANOM mean: 0.011133113311331119, ANOM min: -2.09, ANOM max: 2.71