find the dot product of sub-arrays in numpy

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-21 04:10:13

问题


In numpy, the numpy.dot() function can be used to calculate the matrix product of two 2D arrays. I have two 3D arrays X and Y (say), and I'd like to calculate the matrix Z where Z[i] == numpy.dot(X[i], Y[i]) for all i. Is this possible to do non-iteratively?


回答1:


How about:

from numpy.core.umath_tests import inner1d
Z = inner1d(X,Y)

For example:

X = np.random.normal(size=(10,5))
Y = np.random.normal(size=(10,5))
Z1 = inner1d(X,Y)
Z2 = [np.dot(X[k],Y[k]) for k in range(10)]
print np.allclose(Z1,Z2)

returns True

Edit Correction since I didn't see the 3D part of the question

from numpy.core.umath_tests import matrix_multiply
X = np.random.normal(size=(10,5,3))
Y = np.random.normal(size=(10,3,5))
Z1 = matrix_multiply(X,Y)
Z2 = np.array([np.dot(X[k],Y[k]) for k in range(10)])
np.allclose(Z1,Z2)  # <== returns True

This works because (as the docstring states), matrix_multiplyprovides

matrix_multiply(x1, x2[, out]) matrix

multiplication on last two dimensions



来源:https://stackoverflow.com/questions/6299770/find-the-dot-product-of-sub-arrays-in-numpy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!