[PYTHON] Comportement de numpy.dot lors du passage d'un tableau 1d et d'un tableau 2d

Question

>>> a = np.array([1,2,3])
>>> b = np.array([2,3,4])
>>> np.dot(a, b)
20
>>> A = np.array([[1,2],[2,3],[3,4]]) # 3x2
>>> B = np.array([[1,2,3],[2,3,4]]) # 2x3
>>> np.dot(A, B)
array([[ 5,  8, 11],
       [ 8, 13, 18],
       [11, 18, 25]])

Comme indiqué ci-dessus, «numpy.dot» avec deux tableaux 1d donne un produit interne, et deux tableaux 2d donne un produit matriciel, Que faire si je passe un tableau 1d et un tableau 2d?

Vérification

Passez le tableau 1d comme premier argument

>>> A = np.array([[1,2],[2,3],[3,4]]) # 3x2
>>> b = np.array([1,2,3])
>>> np.dot(b, A)
array([14, 20])

Le tableau 3D 1d passé au premier argument, b, est traité comme un tableau 1x3 2d. Le produit de la matrice est converti en tableau 1d et renvoyé.

>>> A = np.array([[1,2],[2,3],[3,4]]) # 3x2
>>> B = np.array([[1,2,3]]) #1x3
>>> np.dot(B, A)
array([[14, 20]])

Passez le tableau 1d comme deuxième argument

>>> A = np.array([[1,2],[2,3],[3,4]]) # 3x2
>>> b = np.array([1,2])
>>> np.dot(A, b)
array([ 5,  8, 11])

Lorsqu'il est passé au deuxième argument, il est traité comme un tableau 2x1 2d.

>>> A = np.array([[1,2],[2,3],[3,4]]) # 3x2
>>> B = np.array([[1],[2]]) # 2x1
>>> np.dot(A, B)
array([[ 5],
       [ 8],
       [11]])

Conclusion

Le tableau 1d à N dimensions est

Recommended Posts

Comportement de numpy.dot lors du passage d'un tableau 1d et d'un tableau 2d
Python> lien> Initialisation et affectation de tableaux 2D
Différence entre le tableau Numpy 1D [x] et le tableau 2D [x, 1]
Résumé de la correspondance entre les opérations de tableau ruby et python
Comportement lorsque Container Trainable = False dans Keras
Comportement de multiprocessing.pool.Pool.map
Le comportement de retrait de json.dumps est différent entre python2 et python3