Numpy - 计算一维数组的元素明智的平均值
Numpy - Calculate element wise mean for a 1D array
我发现了多个标题相似的问题,但它们与我的情况不符。
我有一个带有偏移值的 np.array,我想要所有先前值的索引的平均值。
我的第一个方法是使用 for 循环,但是对于巨大的数组,这显然是一种减慢速度的方法。
offset = np.array([2, 4, 5, 7, 8, 10])
mean_mraw = []
for i, ofs in enumerate(offset):
mean_mraw.append(offset[0:i+1].mean())
所以我期望的是:
mean_mraw = [2, 3, 3.6, 4.5, 5.2, 6] #np.array
是否有 np- build in function for that 或者我怎么能用另一种方式解决它。
谢谢
您可以使用累计总和(np.cumsum
)除以所见元素的数量(使用np.arange
):
a = np.array([2, 4, 5, 7, 8, 10])
out = np.cumsum(a)/(np.arange(a.shape[0])+1)
输出:
array([2. , 3. , 3.66666667, 4.5 , 5.2 ,
6. ])
我发现了多个标题相似的问题,但它们与我的情况不符。
我有一个带有偏移值的 np.array,我想要所有先前值的索引的平均值。
我的第一个方法是使用 for 循环,但是对于巨大的数组,这显然是一种减慢速度的方法。
offset = np.array([2, 4, 5, 7, 8, 10])
mean_mraw = []
for i, ofs in enumerate(offset):
mean_mraw.append(offset[0:i+1].mean())
所以我期望的是:
mean_mraw = [2, 3, 3.6, 4.5, 5.2, 6] #np.array
是否有 np- build in function for that 或者我怎么能用另一种方式解决它。
谢谢
您可以使用累计总和(np.cumsum
)除以所见元素的数量(使用np.arange
):
a = np.array([2, 4, 5, 7, 8, 10])
out = np.cumsum(a)/(np.arange(a.shape[0])+1)
输出:
array([2. , 3. , 3.66666667, 4.5 , 5.2 ,
6. ])