在numpy中,该numpy.dot()
函数可用于计算两个二维数组的矩阵乘积。我有两个 3D 数组 X 和 Y (比如说) ,我想计算矩阵 Z Z[i] == numpy.dot(X[i], Y[i])
。i
这可以非迭代地做吗?
问问题
4014 次
1 回答
8
怎么样:
from numpy.core.umath_tests import inner1d
Z = inner1d(X,Y)
例如:
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)
返回True
编辑更正,因为我没有看到问题的 3D 部分
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
这是有效的,因为(如文档字符串所述),matrix_multiply
提供
matrix_multiply(x1, x2[, out]) 矩阵
最后两个维度的乘法
于 2011-06-10T01:09:37.993 回答