You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

矩阵向量乘法:如何直接得到形状为(d,)的结果?

解决numpy矩阵与向量相乘后返回(2,1)形状而非(2,)的问题

问题重现

import numpy as np

X = np.matrix([[0, 1], [1, 0]])
e1 = np.array([1, 1])

state = X @ e1
print(X @ state)  # 会因维度不匹配报错,state形状是(2,1)

使用@操作符进行矩阵向量乘法时,返回的向量形状为(2,1)而非(2,),导致后续矩阵相乘出现维度不匹配问题。

直接获取形状为(d,)结果的方法

  • 方法一:用np.array替代np.matrix定义矩阵
    np.matrix是numpy中专门的矩阵类,乘法后默认返回二维列矩阵;而np.ndarray的矩阵乘法会将向量视为一维数组,返回一维结果,完全符合需求:

    import numpy as np
    
    X = np.array([[0, 1], [1, 0]])  # 改用array定义矩阵
    e1 = np.array([1, 1])
    
    state = X @ e1
    print(state.shape)  # 输出 (2,)
    print(X @ state)    # 正常执行,无维度问题
    
  • 方法二:保留np.matrix,用.A1属性转换结果
    如果必须使用np.matrix,可以直接用矩阵对象的.A1属性将二维列矩阵转为一维数组,比reshape更简洁高效:

    import numpy as np
    
    X = np.matrix([[0, 1], [1, 0]])
    e1 = np.array([1, 1])
    
    state = (X @ e1).A1  # 用.A1转成一维数组
    print(state.shape)  # 输出 (2,)
    print(X @ state)    # 正常执行
    

补充说明

np.matrix的设计初衷是兼容MATLAB的矩阵操作习惯,但在现代numpy使用中,更推荐用np.ndarray来处理数组和矩阵,它的行为更灵活一致,能避免这类维度匹配的麻烦。

内容的提问来源于stack exchange,提问作者Damuna Taliffato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:10