平均使用numpy.mean直到数字N.

时间:2013-11-20 16:00:27

标签: python numpy average mean

假设我有一个包含10个元素的列表

a = [1,2,3,4,5,6,7,8,9,0]

我想仅取N元素的平均值,比如说4,即 average of [1,2,3,4]如何使用Numpy

执行此操作

通常情况下,我可以迭代一个列表,但这会花费我一个额外的列表,我不想invest

Numpy文档没有提供给我一些东西。

2 个答案:

答案 0 :(得分:4)

假设您有一个numpy数组而不是列表,只需切片第一个N元素并使用mean方法。

(如果你想让事情无论是列表还是numpy数组,都要使用np.mean(a[:4]),如上面建议的@larsmans。)

例如

import numpy as np
x = np.arange(10)
print x
print 'Mean of first 4 items in x', x[:4].mean()

切割一个numpy数组,即y = x[:4],不会使用numpy数组进行复制(就像使用列表一样)。相反,它会将“视图”返回到x。这不会复制内存,所以非常有效。

对numpy数组的部分进行切片和操作是一种非常常见的习惯用法。有关详细信息,请查看文档:{​​{3}}

答案 1 :(得分:1)

如果你不想要额外的列表开销,你可以编写一个简单的均值函数:

def mean_of_n(arr, n):
    index = 0
    current_sum = 0
    n = min(n, len(arr))
    while index < n:
        current_sum += arr[index]
        index += 1
    return float(current_sum) / n