假设我们在一个numpy数组中有6个向量(每个向量有1*4维),形状为(3,2,4),如下所示:

A=np.array([   [[1,2,3,4], [5,6,7,8]],    [[ 7,8 ,9,10],[ 11,12 ,13,14]],    [[ 15,16 ,17,18],[ 19,20 ,21,22]]   ])

假设我们有一个维度为4*4的矩阵B,它是一个np数组形式,具有如下的(4,4)形状

B=np.array([  [1,2,3,4],     [5,6,7,8],      [9,10,11,12], [13,14,15,16]])

如何对A中6个向量中的每个向量进行矩阵B的矩阵乘法,结果与A的形状相同 像这样的再分配

result=np.array([   [[1,2,3,4]@B, [5,6,7,8]@B],    [[ 7,8 ,9,10]@B,[ 11,12 ,13,14]@B],    [[ 15,16 ,17,18]@B,[ 19,20 ,21,22]@B]   ])

result=np.array([[[ 90, 100, 110, 120],
        [202, 228, 254, 280]],

       [[258, 292, 326, 360],
        [370, 420, 470, 520]],

       [[482, 548, 614, 680],
        [594, 676, 758, 840]]])

推荐答案

编辑:

看来你要找的是np.matmul:

>>> np.matmul(A, B)
array([[[ 90, 100, 110, 120],
        [202, 228, 254, 280]],

       [[258, 292, 326, 360],
        [370, 420, 470, 520]],

       [[482, 548, 614, 680],
        [594, 676, 758, 840]]])

然而,你可以用numpy broadcasting来得到你所期望的:

>>> Stu_data[:, :, None] * A_data

array([[[[   1,    4,    9,   16],
         [   5,   12,   21,   32],
         [   9,   20,   33,   48],
         [  13,   28,   45,   64]],

        [[  55,  132,  231,  352],
         [ 275,  396,  539,  704],
         [ 495,  660,  847, 1056],
         [ 715,  924, 1155, 1408]]],


       [[[   1,    4,    9,   16],
         [   5,   12,   21,   32],
         [   9,   20,   33,   48],
         [  13,   28,   45,   64]],

        [[   1,    4,    9,   16],
         [   5,   12,   21,   32],
         [   9,   20,   33,   48],
         [  13,   28,   45,   64]]],


       [[[   1,    4,    9,   16],
         [   5,   12,   21,   32],
         [   9,   20,   33,   48],
         [  13,   28,   45,   64]],

        [[   1,    4,    9,   16],
         [   5,   12,   21,   32],
         [   9,   20,   33,   48],
         [  13,   28,   45,   64]]]])

形状:

>>> A_data
(4, 4)

>>> Stu_data
(3, 2, 4)

>>> Stu_data[:, :, None].shape
(3, 2, 1, 4)

>>> (Stu_data[:, :, None] * A_data).shape
(3, 2, 4, 4)

Python相关问答推荐

七段显示不完整

为什么判断pd.DataFrame的值与判断pd.Series的值存在差异(如果索引中有值)?

使用Curses for Python保存和恢复终端窗口内容

从Python调用GMP C函数时的分段错误和内存泄漏

单击Python中的复选框后抓取数据

在Python中管理多个OpenGVBO和VAO实例

在Windows上启动新Python项目的正确步骤顺序

symy.分段使用numpy数组

使用Ubuntu、Python和Weasyprint的Docker文件-venv的问题

剧作家Python:expect(locator).to_be_visible()vs locator.wait_for()

Odoo 14 hr. emergency.public内的二进制字段

如何在箱形图中添加绘制线的传奇?

Gekko:Spring-Mass系统的参数识别

有症状地 destruct 了Python中的regex?

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

Pre—Commit MyPy无法禁用非错误消息

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

ConversationalRetrivalChain引发键错误