python - numpy中的逐行乘法

标签 python arrays numpy matrix-multiplication

我有 2 个矩阵 A ( mxn ) 和 B (nxm)。我会得到矩阵 C ( nxmxm ), 这样 C[i]=A[:, i].dot(B[i, :]) .换句话说,我想得到矩阵,其中第一个元素是 A 的第一列的点。和第一行 B , 第二个元素是 A 第二列的点第二行 B , ETC。 例如对于这样的 AB

A = np.array([[1, 2, 3], [0, 1, -1]])
B = np.array([[4, 5], [6, 7], [8, 9]])

我想要这样的矩阵:

C = np.array([[[4, 5], [0, 0]],
          [[12, 14], [6, 7]],
          [[24, 27], [-8, -9]]])

没有循环是否可能?如果不是,是否有可能案例 A = B.T

最佳答案

你可以使用np.einsum:

np.einsum('ij,jk->ijk', A, B)

array([[[ 4,  5],
        [12, 14],
        [24, 27]],

       [[ 0,  0],
        [ 6,  7],
        [-8, -9]]])

编辑

来自您的评论:

np.einsum('ij,jk->jik', A, B)

将为您提供所需的 C

形状

关于python - numpy中的逐行乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413000/

相关文章:

python - Protobuf-2.6.0 与 Python 3?

python - 具有自定义宽度的动画 Kivy Bezier 曲线? (有点傻的问题)

python - 按值从 nd 数组中删除行

python - python切片中 "a[:,1]"的含义是什么

python - 为什么我的水平滚动条在使用columnconfigure后停用

python - 为python3.3安装pip

arrays - `Array#each_slice` ,开头留余数

php - 如何从PHP数组生成一定数量的值?

javascript - 如何计算json中的相似值对象?

python - 计算一个数组的元素在另一个数组中的出现次数