Hmmm, sembra così facile da implementare la funzione è in realtà abbastanza facile da sbagliare e ha favorito una buona discussione sulla efficienza della memoria mi contento di avere troppo grosso se questo significa sapere che cosa s stato fatto bene Richard 20 settembre 14 a 19 23.NumPy s mancanza di una particolare funzione specifica per dominio è forse a causa del core team s disciplina e fedeltà al NumPy s direttiva primaria fornire il tipo di un array N-dimensionale così come le funzioni per la creazione, e l'indicizzazione quelle matrici come molti obiettivi fondamentali, questo non è piccolo, e lo fa NumPy brilliantly. The molto più grande SciPy contiene una molto più grande collezione di librerie specifici del dominio chiamato sottopackage di sviluppatori SciPy --Per esempio, numerico ottimizzare l'ottimizzazione, il segnale processsing segnale e calcolo integrale integrate. My ipotesi è che la funzione siete dopo è in almeno uno dei SciPy sottopackage forse però, vorrei guardare prima nella collezione di scikits SciPy identificare il scikit rilevanti s e cercare la funzione di there. Scikits interesse sono sviluppati in modo indipendente sulla base di pacchetti NumPy SciPy e diretto ad una particolare disciplina tecnica per esempio scikits-immagine scikits-imparare, ecc Molti di questi erano in particolare, il OpenOpt impressionante per l'ottimizzazione numerica sono stati molto apprezzato, progetti maturi a lungo prima di scegliere di risiedere sotto le relativamente nuove scikits rubrica la homepage scikits è piaciuto sopra elenca circa 30 tali scikits anche se almeno alcuni di quelli non più sotto development. Following attivi sono questo consiglio si porterebbe a scikits-timeseries tuttavia, che il pacchetto non è più in fase di sviluppo attivo In effetti, Panda è diventato, per quanto ne so, la de facto NumPy a base di library. Pandas serie temporali ha diverse funzioni che possono essere utilizzate per calcolare una media mobile il più semplice di questi è probabilmente rollingmean che si utilizzano come so. Now, basta chiamare la funzione rollingmean passando l'oggetto della serie e una finestra dimensioni, che nel mio esempio qui sotto è 10 days. verify che ha funzionato - per esempio valori confrontati 10-15 nella serie originale contro la nuova serie lisciato con rotolamento mean. The funzione rollingmean, insieme a circa una decina di altre funzioni sono informalmente raggruppati nella documentazione Panda sotto la rubrica in movimento le funzioni della finestra di un secondo, gruppo correlato di funzioni in Panda si riferisce a funzioni come esponenzialmente ponderati per esempio EWMA che calcola in modo esponenziale media mobile ponderata il fatto che questo secondo gruppo non è incluso nella prima finestra in movimento funzioni è forse perché le trasformazioni in modo esponenziale ponderate don t contare su una lunghezza fissa window. answered 14 Gennaio 13 ad 6 38.I m nel processo di creazione di un algoritmo di forex trading e ho voluto provare il mio colpo a calcolare EMA medie mobili esponenziali i miei risultati sembrano essere corrette rispetto ai calcoli che ho fatto a mano, quindi credo che il seguente metodo funziona, ma solo voluto ottenere un ulteriore set di occhi per fa in modo im non manca anything. Note che questo solo restituisce l'EMA per l'ultimo prezzo, doesn t restituire un array di EMA s come quella t isn quello che mi serve per la mia application. Recursion è un buon strumento per il lavoro giusto, ma qui è utilizzato per realizzare semplici loop come tale la code. is più difficili da leggere e ragione about. is più lento perché gran parte del codice in ema ha solo bisogno di correre once. will fallire con valore sufficientemente grande di finestra a causa traboccante Python s documento chiamata stack. Please almeno i parametri di ogni funzione, ad esempio, che la finestra è la lunghezza della finestra, e che la posizione conta a ritroso a partire dalla fine dei dati nelle cose realtà sarebbe più chiaro se la posizione fosse un indice in avanti normale in data. Raise un'eccezione quando si trova un parametro ha un invalido valore Tornando Nessuno invece sarà solo causa una eccezione più confusa dopo infatti, se provo 600 ottengo ricorsione infinita perché SMA restituisce None che rende chiamata ema SMA più e più again. The precedente punto rivela anche che, se len finestra dei dati 2 non è la validità giusto check. The 1 nei dati - window 2 1 1 - window don t sembra corretto a me suppongo che si desidera che i dati - window 2 - window. The istruzione return previousema è in un posto strano perché a quel punto si è calcolato un nuovo currentema Questo è il caso base della ricorsione, ed è consuetudine per gestire il caso di base proposta first. My per ema. answered 26 nov 14 ad 18 56.Pretty superficiale review. You don t bisogno di scrivere una classe per quello che state facendo e io suggerisco di avere uno sguardo a questo video la classe non incapsulare tutti i dati e basta usarlo per avere le funzioni in una stessa entità Credo che le cose sarebbero più facili da capire se si dovesse definire classmethod per rendere evidente che hai vinto t davvero fare affidamento su qualsiasi istanza di sorta, tuttavia, un'opzione ancora migliore sarebbe quella di definire le funzioni solo in un indicatore module. answered 24 14 novembre alle 18 04.Thanks per i suggerimenti che in realtà li ho avuto come classmethods e dibattuto andando avanti e indietro tra persino utilizzando una classe o semplicemente definire le funzioni in un modulo indicatore che io ora fare ChrisC 25 novembre 14 al 19 12.Just visto il video troppo, grande ChrisC roba 25 novembre 14 al 19 43.Your Answer.2017 Stack Exchange, Inc. I che questo è una vecchia questione, ma qui è una soluzione che doesn t utilizzare qualsiasi struttura dati o le librerie e 'lineare nel numero di elementi della lista di input e non posso pensare di qualsiasi altro modo per renderlo più efficiente in realtà se qualcuno sa di un modo migliore per allocare il risultato, per favore fatemelo know. NOTE questo sarebbe molto più veloce utilizzando una matrice NumPy invece di una lista, ma mi voleva eliminare tutte le dipendenze sarebbe anche possibile migliorare le prestazioni in base alla funzione multi-threaded execution. The presuppone che la lista di ingresso è uno così essere careful. UPD soluzioni dimensionali, più efficienti sono stati proposti da Alleo e jasaarim. You può usare per fare quello. Il argomento modalità Specifica come gestire i bordi ho scelto la modalità valida qui perché penso che s come la maggior parte delle persone si aspettano in esecuzione significare per lavorare, ma si possono avere altre priorità Qui è un grafico che illustra la differenza tra il modes. answered 24 Mar 14 ad 22 01.I come questa soluzione perché è pulito una linea e relativamente efficiente lavoro fatto all'interno NumPy Ma soluzione efficiente Alleo s usando ha una migliore complessità Ulrich Stern 25 settembre 15 a 0 31.You può calcolare un funzionamento significa with. Fortunately, NumPy include una funzione convolve che possiamo utilizzare per accelerare le cose Il funzionamento è equivalente a dire convolvendo x con un vettore che è N lungo, con tutti i membri pari a 1 N l'implementazione NumPy del convolve comprende il transitorio di avviamento, quindi bisogna rimuovere il primo N-1 points. On mia macchina, la versione veloce è 20-30 volte più veloce, a seconda della lunghezza del vettore di ingresso e la dimensione del media window. Note che convolve include una stessa modalità che sembra che dovrebbe affrontare la questione partendo transitorio, ma che divide tra l'inizio e end. It rimuove il transitorio tra la fine e l'inizio doesn t hanno una Beh, immagino che Sa questione di priorità, i don t bisogno lo stesso numero di risultati sul scapito di ottenere una pendenza verso lo zero che isn t lì nei dati BTW, qui è un comando per mostrare la differenza tra le modalità modalità completa, stessi, trama valida quelli Convolve 200,, quelli 50, 50, la modalità m per m in modalità asse -10, 251, - 1, 1 1 modalità leggenda, loc inferiori centro con pyplot e NumPy importati lapis 24 marzo 14 al 13 56.pandas è più adatto per questo che NumPy o SciPy la sua funzione rollingmean fa il lavoro comodamente inoltre restituisce un array di NumPy quando l'ingresso è un array. It è difficile da battere in rollingmean prestazioni con qualsiasi implementazione di Python puro personalizzato Ecco un esempio prestazioni contro due della proposta di solutions. There sono anche bello opzioni su come affrontare il bordo values. I m sempre infastidito dalla funzione di elaborazione dei segnali che restituiscono segnali di uscita di forma diversa rispetto i segnali di ingresso quando entrambi gli ingressi e le uscite sono della stessa natura ad esempio, entrambi i segnali temporali si rompe la corrispondenza con relativa variabile ad esempio indipendente dal tempo, la frequenza rendendo stampa o confronto non una questione diretta in ogni caso, se si condivide la sensazione, si potrebbe desiderare di cambiare le ultime righe della funzione proposto come stesso rendimento y windowlen-1 - windowlen-1 Christian O Reilly 25 agosto 15 al 19 56.A po 'in ritardo alla festa, ma io ho fatto la mia piccola funzione che non avvolgono le estremità o pastiglie con zeri che vengono poi utilizzati per trovare la media, nonché un ulteriore trattamento è, che anche ri-campioni del segnale in punti distanziati linearmente personalizzare il codice a piacimento per ottenere altro metodo features. The è una semplice moltiplicazione di matrici con un normalizzato gaussiana kernel. A utilizzo semplice su un segnale sinusoidale con l'aggiunta normale domanda noise. This distribuiti è ora ancora più vecchio di quando NeXuS ha scritto su di esso il mese scorso, ma mi piace come il suo codice si occupa di casi limite Tuttavia, poiché si tratta di una semplice media mobile, s risultati in ritardo rispetto i dati si applicano al ho pensato che fare con casi limite in modo più soddisfacente rispetto alle modalità NumPy s valida stesso e pieno potrebbe essere realizzato mediante l'applicazione di un approccio simile a una convoluzione basato usi contributo method. My in media centrale corsa per allinearsi ai risultati con i loro dati quando ci sono due alcuni punti disponibili per la finestra ingrandita da utilizzare, medie consecutive sono calcolati dalle finestre sempre più piccoli ai bordi della matrice realtà, dalle finestre sempre più grandi, ma che s un'implementazione detail. It s relativamente lento in quanto utilizza convolve e potrebbe probabilmente essere ripulito un bel po 'da un vero Pythonista, però, credo che l'idea stands. answered 2 gennaio a 0 28. è bello ma lento quando il larghezza della finestra cresce grande Alcune risposte forniscono algoritmi più efficiente con, ma sembrano incapaci di gestire i valori bordo io stesso ho implementato un algoritmo che può gestire bene questo problema, se questo problema è dichiarato parametro as. Input mergenum può essere pensato come 2 1.I WindowWidth sa questo codice è un po 'illeggibile se u trovare utile e vogliono alcuni expanations, per favore fatemelo sapere e io ll aggiornare questa risposta Dopo aver scritto una spiegazione può costare me un sacco di tempo, spero lo faccio solo quando qualcuno ha bisogno prega perdonami per la mia laziness. If solo u è interessata nella sua ancora più illeggibile la prima soluzione originale version. It s si libera di problema bordo da zeri imbottitura intorno la matrice, ma la seconda soluzione postato qui gestisce in modo duro e diretto. in la mia ultima frase stavo cercando di spiegare perché aiuta errore in virgola mobile Se due valori sono all'incirca lo stesso ordine di grandezza, aggiungendo poi li perde meno precisione rispetto se si è aggiunto un numero molto elevato di una molto piccola il codice combina adiacente valori in modo che anche le somme intermedie dovrebbero sempre essere ragionevolmente vicino in grandezza, per ridurre al minimo l'errore del punto floating Nulla è infallibile ma questo metodo ha salvato una coppia molto scarsamente implementato progetti in produzione Mayur Patel 15 dicembre 14 a 17 22. Alleo Invece di fare un'aggiunta al valore, si verrà facendo due la prova è lo stesso del problema bit-flipping Tuttavia, il punto di questa risposta non è necessariamente le prestazioni, ma l'uso della memoria di precisione per una media di valori a 64 bit non superare i 64 elementi nella cache, quindi è amichevole in utilizzo della memoria così Mayur Patel 29 dicembre 14 a 17 04.
No comments:
Post a Comment