| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- # 一些基础统计函数:平均值、方差、极值与归一化
- # 保持示例简单可读,不依赖外部库。
- def mean(nums):
- count = 0
- total = 0
- for x in nums:
- total += x
- count += 1
- return total / count if count else 0
- def variance(nums):
- # 使用总体方差公式
- m = mean(nums)
- count = 0
- acc = 0
- for x in nums:
- diff = x - m
- acc += diff * diff
- count += 1
- return acc / count if count else 0
- def min_max(nums):
- it = iter(nums)
- try:
- first = next(it)
- except StopIteration:
- return None, None
- mn = mx = first
- for x in it:
- if x < mn:
- mn = x
- if x > mx:
- mx = x
- return mn, mx
- def normalize(nums):
- # 线性归一化到 [0,1]; 若所有值相等则返回全 0
- mn, mx = min_max(nums)
- out = []
- if mn is None:
- return out
- span = mx - mn
- if span == 0:
- for _ in nums:
- out.append(0)
- return out
- for x in nums:
- out.append((x - mn) / span)
- return out
- if __name__ == '__main__':
- data = [3, 7, 2, 9, 4]
- print('data =', data)
- print('mean =', mean(data))
- print('variance =', variance(data))
- print('min,max =', min_max(data))
- print('normalize =', normalize(data))
|