2013-11-20 42 views
2

假設我有10個元素平均使用numpy.mean直到數N

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

列表中,我想只拿N元素的平均,說4,就是 average of [1,2,3,4]怎麼辦我這樣做使用Numpy

通常我可以迭代一個列表,但這會花費我一個額外的列表,我不想invest

Numpy文檔沒有提供給我東西。

+6

你的意思是'np.mean(A [ :4])'? –

+0

是的。愚蠢我錯過了。 – pistal

回答

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數組的部分進行切片和操作是一個非常常見的習慣用法。看看以瞭解更多信息的文檔:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

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