HINWEIS:numpy Korrelationskoeffizient: np.dot (A, AT) auf großen Arrays verursacht seg fault
Speed is not as important as getting a final result.
However, some speed up over worst case is required as well.
Ich habe ein großes Array A:
A.shape=(20000,265) # or possibly larger like 50,000 x 265
ich brauche die Korrelation zu berechnen, Koeffizienten.
np.corrcoeff # internally casts the results as doubles
Ich lieh nur ihren Code und schrieb meine eigene cov/Korr nicht in Doppel Gießen, da ich nur 32-Bit wirklich brauchen floats.And ich Graben der conj(), da meine Daten immer real sind.
cov = A.dot(A.T)/n #where A is an array of 32 bit floats
diag = np.diag(cov)
corr = cov/np.sqrt(np.mutliply.outer(d,d))
ich immer noch über genügend Arbeitsspeicher ausgeführt, und ich bin eine große Speichermaschine, 264GB
ich gesagt habe, dass die schnellen C-Bibliotheken sind wahrscheinlich eine Routine, die den Punkt bricht Produkt in Stücke, und um dies zu optimieren, wird die Anzahl der Elemente auf eine Stärke von 2 aufgefüllt.
Ich brauche nicht wirklich die symmetrische Hälfte der Korrelationskoeffizientenmatrix zu berechnen. Allerdings sehe ich keinen Weg, dies in angemessener Zeit manuell mit Python-Schleifen zu tun.
Kennt jemand einen Weg, um numpy für eine annehmbare Punktproduktroutine zu bitten, die Speicherverbrauch mit Geschwindigkeit ausgleicht ...?
Prost
UPDATE:
Lustig, wie diese Fragen schreiben Sie mir die Sprache für eine bessere Google-Abfrage finden zu helfen, neigt.
diese Gefunden:
http://wiki.scipy.org/PerformanceTips
nicht sicher, dass ich es folgen .... ja, bitte Antworten zu dieser Lösung kommentieren oder bieten, Ihre eigenen Ideen oder einfach nur allgemeine Kommentare zu dieser Art von Problem.
TIA
EDIT: Ich entschuldige mich, weil mein Array wirklich ist viel größer, als ich dachte. Array-Größe ist eigentlich 151.000 x 265 Ich bin auf einer Maschine mit 264 GB mit mindestens 230 GB frei von Arbeitsspeicher.
Ich bin überrascht, dass die numpy Call zu Blas dgemm und vorsichtig mit C-Order-Arrays nicht hocken.
Welche Bibliothek ist Ihre Bibliothek gegen? 'np .__ config__.blas_opt_info' – jtaylor
@jtaylor Ich habe ein wenig über diese Config bf gelesen, aber nicht in der Bedeutung dieser Ausgabe: {'define_macros': [('ATLAS_INFO', '"\\" 3.8.4 \\ ""') ], 'language': 'c', 'libraries': ['ptf77blas', 'ptcblas', 'atlas'], – wbg
"Ich habe auf einer Maschine mit 264 GB mit mindestens 230 Arbeitsspeicher keinen Speicherplatz mehr GB free "sieht verdächtig aus, welches Betriebssystem und welche Version von Python \ numpy verwenden Sie? (Ich meine x32 oder x64?) – mrgloom