[英]Numpy array mean each ten values
我有一個包含數百萬個值的 numpy 數組。 它只有一個維度。 我想返回一個新的 numpy 數組,其中包含每個十位的平均值。
有什么解決辦法?
感謝您的支持!
reshape
、求和並除以 10:
N = 10
a.reshape(-1,N).sum(1)/N
或者,使用numpy.mean
:
np.mean(a.reshape(-1,10), 1)
注意。 您需要確保數組的長度是 N 的倍數。如果不是,則切片以截斷或填充以添加缺失值
例子:
a = np.arange(10*20)
a.reshape(-1,10).sum(1)/10
output:
array([ 4.5, 14.5, 24.5, 34.5, 44.5, 54.5, 64.5, 74.5, 84.5,
94.5, 104.5, 114.5, 124.5, 134.5, 144.5, 154.5, 164.5, 174.5,
184.5, 194.5])
假設 'a' 是包含數百萬個條目的數組,那么您可以獲得所需的 output,如下所示:
x = np.array([np.mean(a[i:i+10]) for i in range(0, len(a), 10)])
如果你的數組不是很平衡,用nan
填充你的數組並使用np.nanmean
來計算平均值:
a = np.arange(123)
N = 10
M = int(np.ceil(len(a) / 10) * 10 - len(a))
b = np.nanmean(np.concatenate([a, np.full(M, np.nan)]).reshape(-1, N), axis=1)
Output:
>>> b
array([ 4.5, 14.5, 24.5, 34.5, 44.5, 54.5, 64.5, 74.5, 84.5,
94.5, 104.5, 114.5, 121. ])
121 = (120 + 121 + 122 + 南 + 南 + 南 + 南 + 南 + 南 + 南) / 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.