如何获得数组的平均值?

时间:2014-04-14 15:10:11

标签: python arrays numpy

我正在尝试计算最后10个元素的平均值。 首先,我正在从文件中读出数据:

np.genfromtxt(filename,skip_header=6, names=True)

首先我尝试使用numpy.mean函数,但是我收到以下错误:

TypeError: cannot perform reduce with flexible type

所以我决定编写一个函数:

def get_mean_values( marray, nr ):
    """
    """
    # Creating an empty array
    tmp = np.delete( marray[-1:], 0, 0 )

    for key in marray.dtype.fields:
        tmp[key] = np.append( tmp[key], np.mean( marray[key][nr:] ) )


    print tmp
    return tmp

但是tmp数组总是空的。如何计算和存储最后10个元素的平均值。

这就是我的数据外观

array([ (99.9, 9.0),
       (100.0, 9.0) ....], 
      dtype=[('Time', '<f8'), ('HorWind', '<f8')])

2 个答案:

答案 0 :(得分:3)

只要你足够具体,平均功能就可以正常工作:)

import numpy

x = numpy.array([(99.9, 9.0),
       (100.0, 9.0)], 
      dtype=[('Time', '<f8'), ('HorWind', '<f8')])

print 'Time', x['Time'].mean()
print 'HorWind', x['HorWind'].mean()

输出:

Time 99.95
HorWind 9.0

答案 1 :(得分:0)

我不知道这是否有帮助,但计算数组最后十个元素平均值的一般函数是:

array = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

def lastten(index):
    return sum(index[-10:len(index)])/10

print lastten(array)   --> 15