python - 在numpy中找到子数组的点积

标签 python numpy matrix-multiplication

在numpy中,numpy.dot()函数可以用来计算两个二维数组的矩阵乘积。我有两个 3D 数组 X 和 Y(比方说),我想计算矩阵 Z,其中 Z[i] == numpy.dot(X[i], Y[i])对于所有 i。这有可能以非迭代方式进行吗?

最佳答案

怎么样:

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

multiplication on last two dimensions

关于python - 在numpy中找到子数组的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299770/

相关文章:

python - 在循环中使用 find_peaks 从数据中查找峰值高度

python - lxml ElementMaker 属性格式化

python - 用Python解析JSON,数组数组的麻烦

python - 检查值是否高于阈值,如果是,则替换为

SQL 行乘法。 select 中同一个表中的数据彼此相邻

python - Pandas Groupby 对列的特定值进行分组

python - 向量化此非唯一键操作

python - 如何对矩阵进行分箱

matlab - 将两个矩阵逐行相乘

c - C 中的矩阵乘法返回意外结果