Gibt es ein äquivalent zu der MATLAB-Funktion bsxfun in python?
Ich versuche, Hafen einige meiner code aus matlab, python, und einige es nutzt die bsxfun () - Funktion für virtuelle Replikation, gefolgt von Multiplikation oder division (ich verwende Sie auch für logische Operationen). Ich möchte in der Lage, dies zu tun, ohne tatsächlich die Replikation des Vektors (entweder mit einer Funktion oder mit irgendeiner Art von diagonal-matrix) vor der Multiplikation oder Division, um Speicher zu sparen und Zeit.
Wenn es ein äquivalent von bsxfun in eine C-Bibliothek, von einer Art, das würde natürlich auch funktionieren.
- Wenn Sie die Arbeit mit arrays in Python geben, die Sie gehen zu wollen, mit numpy (www.numpy.org) und numpy hat eine sehr schöne Ausstrahlung Eigenschaften. (Siehe scipy.org/EricsBroadcastingDoc für eine kurze Anleitung.)
- Laut diesem question das äquivalent von numpy Rundfunk in matlab ist
bsxfun
, so dass ich denke, das funktioniert anders herum. - Es gibt jetzt eine "offizielle" numpy Rundfunk-tutorial auf docs.scipy.org/doc/numpy/user/basics.broadcasting.html Das tutorial vorgeschlagen, die von DSM können noch sein gefunden auf github.com/dwf/rescued-scipy-wiki/blob/master/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nicht wirklich ein äquivalent von bsxfun, dass ich bewusst bin, obwohl numpy braucht Pflege eine Menge des Rundfunks für Sie, wie andere erwähnt.
Dies ist allgemein angepriesen als ein Vorteil von numpy über matlab, und es ist wahr, dass eine Menge des Rundfunks ist einfacher in numpy, aber bsxfun ist eigentlich mehr allgemein, weil es dauern kann vom Benutzer definierten Funktionen.
Numpy hat diese:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html
aber nur für 1d.
Python ist sehr einfach zu verwenden im Vergleich zu matlab
bsxfun(x) in python-numpy kann leicht getan werden, indem ... in array[], z.B. m[...,:]
Sie können versuchen, diese: