Numpy moving average example


Hmmm, parece que este quoteasy para implementar a função é realmente muito fácil de errar e tem promovido uma boa discussão sobre a eficiência da memória. I39m feliz por ter bloat se isso significa saber que something39s sido feito direito. Ndash Richard Sep 20 14 at 19:23 NumPys falta de uma determinada função específica do domínio é talvez devido à disciplina Core Teams e fidelidade à diretiva NumPys principal: fornecer um tipo de matriz N-dimensional. Bem como funções para criar e indexar essas matrizes. Como muitos objetivos fundacionais, este não é pequeno, e NumPy faz isso brilhantemente. O SciPy (muito maior) contém uma coleção muito maior de bibliotecas específicas de domínio (chamadas subpacotes por SciPy devs) - por exemplo, otimização numérica, processamento de sinal (sinal) e cálculo integral (integrar). Minha suposição é que a função que você está depois está em pelo menos um dos subpáginas SciPy (scipy. signal talvez) no entanto, eu iria olhar primeiro na coleção SciPy scikits. Identificar o (s) scikit (s) relevante (s) e procurar a função de interesse lá. Scikits são desenvolvidos independentemente pacotes baseados em NumPy / SciPy e dirigidos a uma determinada disciplina técnica (por exemplo, scikits-image. Scikits-learn, etc.) Vários destes foram (em particular, o incrível OpenOpt para otimização numérica) foram altamente considerado, maduro Projetos muito antes de escolher para residir sob a rubrica relativamente nova scikits. A página inicial do Scikits gostava de listar cerca de 30 scikits como esse. Embora pelo menos alguns deles já não estejam em desenvolvimento. Seguindo este conselho o levaria a scikits-timeseries no entanto, que o pacote não está mais em desenvolvimento ativo Em efeito, Pandas tornou-se, AFAIK, a biblioteca de série de facto NumPy tempo. Pandas tem várias funções que podem ser usadas para calcular uma média móvel o mais simples destes é provavelmente rollingmean. Que você usa assim: Agora, basta chamar a função rollingmean passando no objeto Series e um tamanho de janela. Que no meu exemplo abaixo é de 10 dias. Verificar que funcionou - por exemplo. Os valores comparados 10-15 na série original versus a nova série alisada com média de rolamento A função rollingmean, juntamente com cerca de uma dúzia de outras funções são agrupadas de forma informal na documentação Pandas sob a rubrica move janela funciona um segundo grupo relacionado de funções Em Pandas é referido como funções exponencialmente ponderadas (eg ewma., Que calcula a média ponderada exponencialmente em movimento). O fato de que este segundo grupo não está incluído na primeira (funções de janela em movimento) é talvez porque as transformações exponencialmente ponderadas não dependem de um eixo de comprimento fixo de windownumpy. average ao longo do qual a média a. Se Nenhum. A média é feita sobre o arranjo achatado. Pesos. Arraylike, optional Uma matriz de pesos associados com os valores em a. Cada valor em a contribui para a média de acordo com seu peso associado. A matriz de pesos pode ser 1-D (caso em que seu comprimento deve ser o tamanho de um ao longo do eixo dado) ou da mesma forma como a. Se weightsNone. Então todos os dados em um são assumidos para ter um peso igual a um. devolvida . Bool, opcional O padrão é False. Se for verdade . A tupla (média de sumofweights) é retornada, caso contrário apenas a média é retornada. Se weightsNone. Sumofweights é equivalente ao número de elementos sobre os quais a média é tomada. Média, sumofweights. Arraytype ou double Retorna a média ao longo do eixo especificado. Quando retornado é True. Retorna uma tupla com a média como o primeiro elemento ea soma dos pesos como o segundo elemento. O tipo de retorno é Float se a for de tipo inteiro, caso contrário ele é do mesmo tipo que a. Sumofweights é do mesmo tipo que a média. Os exemplos a seguir produzem uma média móvel dos valores WINDOW anteriores. Nós truncar o primeiro (WINDOW -1) valores desde que can8217t encontrar a média antes deles. (O comportamento padrão para convolução é assumir que os valores antes do início da seqüência são 0). (Mais formalmente, construímos a seqüência y para a seqüência x onde yi (xi x (i1) 8230. x (in)) / n) Isso faz uso da função de convolução numpy8217s. Esta é uma operação de média móvel de propósito geral. A alteração de ponderações torna alguns valores mais importantes a compensação apropriadamente permite que você visualize a média em torno do ponto em vez de antes do ponto. Em vez de truncar valores, podemos fixar os valores iniciais no lugar, como ilustrado neste exemplo:

Comments