xlin 0.1.8__tar.gz → 0.1.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xlin-0.1.8 → xlin-0.1.10}/PKG-INFO +1 -1
- {xlin-0.1.8 → xlin-0.1.10}/pyproject.toml +1 -1
- xlin-0.1.10/xlin/__init__.py +9 -0
- xlin-0.1.10/xlin/metric.py +53 -0
- xlin-0.1.8/xlin/__init__.py +0 -0
- xlin-0.1.8/xlin/terminal_color.py +0 -10
- xlin-0.1.8/xlin/uuid.py +0 -13
- {xlin-0.1.8 → xlin-0.1.10}/LICENSE +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/README.md +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/ischinese.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/jsonl.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/multiprocess_mapping.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/read_as_dataframe.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/statistic.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/util.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/xls2xlsx.py +0 -0
- {xlin-0.1.8 → xlin-0.1.10}/xlin/yaml.py +0 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
|
2
|
+
def stream_average(avg_pre, cur_num_index, cur_num):
|
3
|
+
"""
|
4
|
+
calculate the average of number in a stream
|
5
|
+
given nums: List[float], calculate avg[n] = sum(nums[:n]) / len(nums[:n]) = sum(nums[:n]) / n
|
6
|
+
however, we don't know the length of the stream, so we use a moving average
|
7
|
+
so avg[n-1] = sum(nums[:n-1]) / (n-1)
|
8
|
+
so n * avg[n] = (n-1) * avg[n-1] + nums[n]
|
9
|
+
so avg[n] = avg[n-1] + (nums[n] - avg[n-1]) / n
|
10
|
+
we don't need to remember every nums before n
|
11
|
+
|
12
|
+
Usage:
|
13
|
+
>>> acc = 0
|
14
|
+
>>> nums = [1, 0, 1, 0, 0, 1, 1, 1, 0, 1]
|
15
|
+
>>> for i, num in enumerate(nums):
|
16
|
+
... acc = stream_average(acc, i, num)
|
17
|
+
|
18
|
+
:param avg_pre: (initially 0) average of previous numbers from index 0 to cur_num_index-1, i.e. avg[n-1]
|
19
|
+
:param cur_num_index: current number index starting from 0, i.e. n
|
20
|
+
:param cur_num: current number, i.e. nums[n]
|
21
|
+
:return: average of current number and previous numbers, i.e. avg[n]
|
22
|
+
"""
|
23
|
+
return avg_pre + (cur_num - avg_pre) / (cur_num_index + 1)
|
24
|
+
|
25
|
+
|
26
|
+
class AverageMeter:
|
27
|
+
"""Computes and stores the average and current value"""
|
28
|
+
|
29
|
+
def __init__(self, name, fmt=':f'):
|
30
|
+
self.name = name
|
31
|
+
self.fmt = fmt
|
32
|
+
self.val = 0
|
33
|
+
self.avg = 0
|
34
|
+
self.sum = 0
|
35
|
+
self.count = 0
|
36
|
+
self.reset()
|
37
|
+
|
38
|
+
def reset(self):
|
39
|
+
self.val = 0
|
40
|
+
self.avg = 0
|
41
|
+
self.sum = 0
|
42
|
+
self.count = 0
|
43
|
+
|
44
|
+
def update(self, val, n=1):
|
45
|
+
self.val = val
|
46
|
+
self.sum += val * n
|
47
|
+
self.count += n
|
48
|
+
self.avg = self.sum / self.count
|
49
|
+
|
50
|
+
def __str__(self):
|
51
|
+
fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})'
|
52
|
+
return fmtstr.format(**self.__dict__)
|
53
|
+
|
xlin-0.1.8/xlin/__init__.py
DELETED
File without changes
|
xlin-0.1.8/xlin/uuid.py
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
from typing import *
|
2
|
-
import uuid
|
3
|
-
|
4
|
-
import pandas as pd
|
5
|
-
|
6
|
-
|
7
|
-
def append_uuid_column(df: pd.DataFrame, uuid_key="uuid"):
|
8
|
-
rows = []
|
9
|
-
for i, row in df.iterrows():
|
10
|
-
row[uuid_key] = str(uuid.uuid4())
|
11
|
-
rows.append(row)
|
12
|
-
df = pd.DataFrame(rows)
|
13
|
-
return df
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|