首页 > 解决方案 > 将结果编辑到表格中

问题描述

在下面的代码中,我尝试在代码中进行编辑,以更形象的方式输出结果,如下所示。寻求一些帮助。

import numpy as np
import math
for p in range(10): 
    x=10.0**-p; 
    result = np.float64((1-np.cos(x))/x)
    print (p)
    print (result)
    Test = np.float64(2*np.sin(x/2)**2/x)
    print (p)
    print(Test)

给出以下结果:

0
0.459697694132
0
0.459697694132
1
0.0499583472197
1
0.0499583472197
2
0.00499995833347
2
0.00499995833347
3
0.000499999958326
3
0.000499999958333
4
4.99999996961e-05
4
4.99999999583e-05
5
5.0000004137e-06
5
4.99999999996e-06
6
5.00044450291e-07
6
5e-07
7
4.99600361081e-08
7
5e-08
8
0.0
8
5e-09
9
0.0
9
5e-10

但是,我正在尝试以更美观的方式输出结果。如何编辑我的代码以输出如下结果:

p     Result             Test

0     0.459697694132     0.459697694132
1     0.0499583472197    0.0499583472197
2     0.00499995833347   0.00499995833347
3     0.000499999958326  0.000499999958333
4     4.99999996961e-05  4.99999999583e-05
5     5.0000004137e-06   4.99999999996e-06
6     5.00044450291e-07  5e-07
7     4.99600361081e-08  5e-08
8     0.0                5e-09
9     1e-09  0.0         5e-10

标签: pythonformattingtabular

解决方案


可以使用熊猫DataFrame

vals = []
for p in range(10): 
    x=10.0**-p; 
    result = np.float64((1-np.cos(x))/x)
    test = np.float64(2*np.sin(x/2)**2/x)
    vals.append((p, result, test))

然后

import pandas as pd

df = pd.DataFrame(vals, columns=['p', 'result', 'test'])


    p   result      test
0   0   0.45969769  0.45969769
1   1   0.04995835  0.04995835
2   2   0.00499996  0.00499996
3   3   0.00050000  0.00050000
4   4   0.00005000  0.00005000
5   5   0.00000500  0.00000500
6   6   0.00000050  0.00000050
7   7   0.00000005  0.00000005
8   8   0.00000000  0.00000001
9   9   0.00000000  0.00000000

您也可以np.vectorize使用方便:

def func(p):
    x=10.0**-p;
    result = np.float64((1-np.cos(x))/x)
    test = np.float64(2*np.sin(x/2)**2/x)
    return p, result, test


vals = np.vectorize(func)(np.arange(10))

pd.DataFrame(dict(zip(['p', 'result', 'test'], vals)))

推荐阅读