Skip to content

分组统计均值数据

Python
import pandas as pd
import numpy as np
import sys


def parse(filename):
    print("==== ", filename, " ====")
    data = np.array(pd.read_table(filename, sep='\t', header=None,
                                  dtype={"value": float}).to_numpy(), dtype=np.float64)
    # 共分5组
    group = 5
    per_group_num = data.size // group
    total_num = per_group_num * group
    print(per_group_num, total_num)
    # 获取相应数据重组
    data = data[0:total_num].reshape((per_group_num, group))
    # [min, mean, max]
    min_array = np.min(data, axis=0)
    avg_array = np.mean(data, axis=0)
    max_array = np.max(data, axis=0)
    stack = np.vstack((min_array, avg_array, max_array))
    # print(stack.T)
    # print(np.savetxt(sys.stdout.buffer, stack.T, fmt='%.3f'))
    # print(np.mean(stack, axis=1))
    return stack.T, np.mean(stack, axis=1)


if __name__ == '__main__':
    np.set_printoptions(suppress=True, precision=4)
    t1, t2 = parse('./data/500kb.txt')
    d1 = t1
    d2 = t2
    print(d1, d2)
    t1, t2 = parse('./data/800kb.txt')
    d1 = np.concatenate([d1, t1], axis=1)
    d2 = np.concatenate([d2, t2])
    print(d1, d2)
    t1, t2 = parse('./data/1mb.txt')
    d1 = np.concatenate([d1, t1], axis=1)
    d2 = np.concatenate([d2, t2])
    d2 = d2.reshape((d2.size, 1))

    # 去除 numpy 输出时的[]
    print(np.savetxt(sys.stdout.buffer, d1, fmt='%.3f'))
    print(np.savetxt(sys.stdout.buffer, d2.T, fmt='%.3f'))