我有一个(大的)1D测量数据数组。我想计算由起始索引和终止索引定义的每个可能切片的平均值。就像在数据的两端切割,并对每个可能的切割取平均值。结果应该存储在一个正方形2D数组中(实际上是一个三角形,因为起始索引必须小于终止索引)。
使用循环是有效的,但是需要很长时间。
有没有办法加快速度?
我有这个代码:
N = 5
data = np.arange(N) # example
av = np.zeros((N, N))
for i in range(av.shape[0]):
for j in range(av.shape[1]):
av[j, i] = np.mean(data[i:j+1])
这是可行的,但需要很长时间。对于类似的计算(元素的差异而不是切片的平均值),我发现了这个非常快速的解决方案:
dist = np.subtract.outer(data, data)
但我不知道如何用切片的平均值来计算。
1条答案
按热度按时间juzqafwq1#
一个选项,先求和,然后除以项目数:
输出:
中间体:
性能
一个1000整数输入(
data = np.arange(1000)
)