[PYTHON] Verhalten von numpy.dot beim Übergeben von 1d-Array und 2d-Array

Frage

>>> 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]])

Wie oben gezeigt, ergibt "numpy.dot" mit zwei 1d-Arrays ein inneres Produkt, und zwei 2d-Arrays ergeben ein Matrixprodukt. Was ist, wenn ich ein 1d-Array und ein 2d-Array übergebe?

Überprüfung

Übergeben Sie das 1d-Array als erstes Argument

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

Das an das erste Argument "b" übergebene 3D 1d-Array wird wie ein 1x3 2d-Array behandelt. Das Matrixprodukt wird in ein 1d-Array konvertiert und zurückgegeben.

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

Übergeben Sie 1d Array als zweites Argument

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

Wenn es an das zweite Argument übergeben wird, wird es wie ein 2x1 2d-Array behandelt.

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

Fazit

N-dimensionales 1d-Array ist

Recommended Posts

Verhalten von numpy.dot beim Übergeben von 1d-Array und 2d-Array
Python> Link> Initialisierung und Zuweisung von 2D-Arrays
Unterschied zwischen Numpy 1D Array [x] und 2D Array [x, 1]
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Verhalten bei Container Trainable = False in Keras
Verhalten von multiprocessing.pool.Pool.map
Das Einrückungsverhalten von json.dumps unterscheidet sich zwischen python2 und python3