我有一個包含數百萬個值的 numpy 陣列。它只有一個維度。我想回傳一個新的 numpy 陣列,其中包含每十位的平均值。
有什么解決辦法?
感謝您的支持!
uj5u.com熱心網友回復:
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
輸出:
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])
uj5u.com熱心網友回復:
假設“a”是您的陣列,包含數百萬左右的條目,那么您可以獲得所需的輸出,如下所示:
x = np.array([np.mean(a[i:i 10]) for i in range(0, len(a), 10)])
uj5u.com熱心網友回復:
如果您的陣列沒有很好地平衡,請填充您的陣列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)
輸出:
>>> 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424158.html
下一篇:對于二進制陣列sum(array)和numpy.count_nonzero(array)當陣列為uint8時,對于大陣列給出不同的答案。為什么?
