假設我有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文檔沒有提供給我東西。
假設我有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文檔沒有提供給我東西。
假設您有一個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
如果你不想額外開銷清單,你可以寫一個簡單的平均函數:
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
你的意思是'np.mean(A [ :4])'? –
是的。愚蠢我錯過了。 – pistal