我有一个不同大小的数组,我想从中平均每个连续的 n 个数字并因此构建另一个数组。
我想出了两种不同的方法,但每种方法都有自己的问题,我不确定这是否是解决此问题的最佳方法:
使用 numpy.array_split() 函数:
import numpy as np no_splits = 3 #Or any number user defines no_items = int(np.random.random(1)*100) # To get a variable number of items pre_array = np.random.random(no_items) mean_array = np.mean(np.array_split(pre_array,no_splits)) #This is efficient but gives an error if len(pre_array)%no_splits != 0
enumerate(pre_array) 替代方案:
mean_array = [np.mean(pre_array[i-no_splits+1:i]) for i, x in enumerate(pre_array) if i%no_splits == 0 and i != 0]
这很好,但如果 i%no_splits != 0 会剪掉最后一个值。理想情况下,我会创建一个最后一个值,它是剩余值的平均值,同时保持代码紧凑。
这些都适用于我的目的,但我不确定它们是否对更大的数组最有效。
先感谢您!