0

我有一个文件,其中包含以下 X、Y、Z 列

#file.csv
X,Y,Z
1,2,3
4,2,5
15,9,1
#

我正在尝试使用 numpy 读取 X 列并给我平均值、标准差和其他统计数据。我无法让 numpy 像我想要的那样将它们读取为列。

import numpy as np
import math 
my_data = np.genfromtxt(filename, delimiter=',', dtype=float, names=[x,y,z])

如果我做的事情np.average(my_data)是平均每一行而不是每一列。如何使其平均 X、Y 和 Z,然后将它们打印到文件中?

X 有很长的数字,例如 2747477447437.959843848,我不想四舍五入。这些是 ID,根本不应该更改!我怎样才能做到这一点?

4

1 回答 1

0

选择axis = 0计算列的平均值(或其他值)。如果您真的不需要第一列,请usecols在使用时指定参数genfromtxt以选择要读取的列。

In [1]: import numpy as np

In [2]: from StringIO import StringIO

In [3]: f = StringIO("""X,Y,Z
   ...: 1,2,3
   ...: 4,2,5
   ...: 15,9,1""")

In [4]: arr = np.genfromtxt(f, delimiter=',', dtype=float, skip_header=1)

In [5]: arr
Out[5]: 
array([[  1.,   2.,   3.],
       [  4.,   2.,   5.],
       [ 15.,   9.,   1.]])

In [6]: np.average(arr, axis=0)
Out[6]: array([ 6.66666667,  4.33333333,  3.        ])
于 2013-01-28T19:40:22.633 回答