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 に答える