如何获取数组的均值?

2 投票
2 回答
1760 浏览
提问于 2025-04-18 02:41

我想计算最后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

我不知道这是否有帮助,但一个通用的函数,用来计算数组最后十个元素的平均值,可以这样写:

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
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

撰写回答