Python Numpy : Operation on each sequential element without for loop?

标签 python numpy vectorization

这是一个极其简单的问题,但广泛的搜索并没有给我提供满意的答案。

我有一个“随着时间的推移”演变的数字数组,例如x = [1, 2, 3, 4, 5] 我想计算每个时间点的平均值。使用 for 循环我会简单地做

import numpy as np

x = [1, 2, 3, 4, 5]
y = np.empty(5)

for i in range(5):

    y[i] = np.mean(x[0:i+1])

print(y)

[ 1.   1.5  2.   2.5  3. ]

在我正在处理的流程中,这些数字不一定遵循上述的简单动态。我想知道是否有一些以“运行”方式应用操作(例如计算平均值)的通用方法,这比 for 循环更快?

最佳答案

怎么样

a = np.array([1, 2, 3, 4, 5])
np.cumsum(a)/(np.arange(1, a.size + 1))

这将适用于计算运行平均值。

I wonder if there is some general way of applying a operation (such as calculating the mean) in a 'running' fashion

我无法对此提供答案。这取决于操作。

关于Python Numpy : Operation on each sequential element without for loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43409648/

相关文章:

matlab - 使用 Matlab 对 3D 矩阵的左右翻转进行矢量化

python - Zip 作为列表理解

python - 列表理解引发 RuntimeError

python - Pygame Sprite 不会重置

python - sess.run() 的 tensorflow 值错误

python - 使 np.sums 的 for 循环运行得更快的方法

使用字符串进行Python对象匹配

python - 运行时警告 : invalid value encountered in double_scalars related to np. sqrt

c++ - AVX 4 位整数

python - 参数化数组的矢量化加法