2016-03-22 6 views
-1

Das Berechnen des dot Produkts in den folgenden drei Fällen führt zu unterschiedlichen Ergebnissen für meine spezifischen Sätze von komplexen NumPy-Arrays, jedoch nicht für einen zweiten Satz von Zufallsmatrizen mit denselben Größen und Datenbereichen.Numpy's Punktprodukt nicht assoziativ

a.dot(b).dot(c).dot(d) 
a.dot(b.dot(c).dot(d)) 
a.dot(b.dot(c)).dot(d) 

produziert

[[ 2.23903250e-08 -1.29444679e-07j]] 
[[ 6.09565057e-07 +2.09702260e-07j]] 
[[ 3.40257465e-07 -1.20382176e-07j]] 

Die Arrays sind ziemlich groß mit einem etwa 14 Mio. hat. Einträge. Könnte die Größe ein Problem sein? Wenn ja, warum macht Numpy keinen Krieg?

+0

Ich würde die Arrays als '.npz' hochladen, aber die Datei ist ~ 200 mb groß – fhchl

Antwort

2

Bis zum Rundungsfehler sind diese Ergebnisse identisch - sie sind alle Nullmatrizen. Unterschiede im Rundungsfehler sind normal.

+0

Ok, siehe das Problem. In der Domäne acousitcs ist 10^-7 manchmal nicht Null. Ich habe diese Ergebnisse nicht mit der Größe der Werte in den Arrays verglichen. – fhchl

+0

Aber warum geben diese Berechnungen genau dasselbe Ergebnis für zufällige Arrays gleicher Größe mit äquivalenten Wertebereichen? – fhchl

+0

@fhchl: Wahrscheinlich nicht, und sie sehen einfach so aus, weil der Rundungsfehler viel kleiner ist als die Ausgabewerte. – user2357112

Verwandte Themen