【发布时间】:2017-06-13 17:14:30
【问题描述】:
我正在从事一个数据处理项目,我通常希望将一维 numpy 数组作为输入,并输出一个等长数组,该数组的元素是通过处理一定数量的输入元素生成的。 这是一个使用 for 循环解决的相对简单的问题,但我想知道 numpy 是否有内置的方法来解决这个问题,我认为这会明显更快。
为了说明我的目标,想象一次生成一个向量 (B) 1 个元素,并让当前生成的元素为元素 N(表示为 B[N])。
假设我希望 B 是一个向量,其元素对应于向量 A 中元素的简单移动平均值。 我想说的是
B[i] = AVG(A[(i-N):i]) #N <= i < len(A)
这里的 i 是正在运行的任何底层循环的迭代索引,而 AVG 是一个通用函数,它计算传递给它的一组数字的平均值。
正如我所说,使用 for 循环很容易,但这似乎像 numpy 之类的东西应该能够很容易地完成,所以我想在我乱丢代码的结构不是最优的之前先问问专业人士。
【问题讨论】:
-
很遗憾,这需要一个具体的例子来回答。
-
@J.C.Leitão。这个问题与这个无关。 OP 正试图放弃使用原始 Python 并改用 numpy。
-
你玩过
np.cumsum和np.cumprod这样的函数吗? -
@MadPhysicist 是不是伪代码不够具体?我相信我对我的目标的解释非常透彻。我只是想知道 numpy 是否有内置的方式来做我在 sudo 代码中所做的事情。
-
@hpaulj 我在某些应用程序中使用过 cumsum,但尝试将它用于测量运动信息(例如标准偏差)的东西我认为它并没有真正起作用。
标签: python arrays numpy indexing