Disons que j'ai un tableau 2D Numpy:tableaux Ajout avec un nombre différent de dimensions
>>> a = np.random.random((4,6))
et je veux ajouter un tableau 1D à chaque ligne:
>>> c = np.random.random((6,))
>>> a + c
Cela fonctionne. Maintenant, si je tente d'ajouter un tableau 1D à chaque colonne, je reçois une erreur:
>>> b = np.random.random((4,))
>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
Je peux résoudre ce problème en utilisant np.newaxis
:
>>> a + b[:,np.newaxis]
qui fonctionne comme prévu. Quelles sont les règles de correspondance de forme pour éviter d'avoir à utiliser np.newaxis?
Est-ce que le dernier élément du tuple de forme numérique doit correspondre? Cette règle s'applique-t-elle également aux dimensions supérieures? Par exemple, les travaux suivants:
>>> a = np.random.random((2,3,4,5))
>>> b = np.random.random((4,5))
>>> a + b
Donc, ma question est de savoir si cela est documenté nulle part, et si elle est un comportement qui peut être invoqué, ou s'il est préférable d'utiliser toujours np.newaxis?
Cela a maintenant du sens - merci! – astrofrog