假设我有一个包含10个元素的列表
a = [1,2,3,4,5,6,7,8,9,0]
我想仅取N
元素的平均值,比如说4
,即
average of [1,2,3,4]
如何使用Numpy
?
通常情况下,我可以迭代一个列表,但这会花费我一个额外的列表,我不想invest
。
Numpy文档没有提供给我一些东西。
答案 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