Est-il un équivalent de la fonction MATLAB bsxfun en python?
Je suis en train de le port certains de mon code à partir de matlab, python, et qu'il utilise le bsxfun() la fonction de quasi-réplication suivie par la multiplication ou la division (je l'utilise aussi pour des opérations logiques). J'aimerais être capable de faire cela sans réellement la réplication du vecteur (soit avec une fonction ou avec une sorte de matrice diagonale) avant de multiplication ou de la division d'enregistrer sur la mémoire et du temps.
Si il y a un équivalent de bsxfun dans une bibliothèque C d'une certaine sorte, qui serait également fonctionner.
- Si vous travaillez avec des tableaux en Python que vous allez avoir à utiliser numpy (www.numpy.org), et numpy a de très jolies propriétés de radiodiffusion. (Voir scipy.org/EricsBroadcastingDoc pour un court tutoriel.)
- Selon cette question l'équivalent de numpy de radiodiffusion dans matlab est
bsxfun
, donc je suppose que cela fonctionne dans l'autre sens. - Il y a maintenant un "officiel" numpy radiodiffusion tutoriel sur docs.scipy.org/doc/numpy/user/basics.broadcasting.html Le tutoriel proposé par le DSM peuvent encore être trouvés dans le github.com/dwf/rescued-scipy-wiki/blob/master/...
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas vraiment d'équivalent de bsxfun, que je suis au courant, bien que numpy ne prendre soin de beaucoup de radiodiffusion pour vous, comme d'autres l'ont mentionné.
Ce qui est communément présenté comme un avantage de numpy plus de matlab, et il est vrai que beaucoup de radiodiffusion est plus simple dans numpy, mais bsxfun est en fait plus général, car il peut prendre des fonctions définies par l'utilisateur.
Numpy a ceci:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html
mais seulement pour les 1d.
Python est très facile à utiliser par rapport à matlab
bsxfun(x) en python numpy peut être facilement fait par ... au tableau[], m[...,:]
Vous pouvez essayer ceci: