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

NumPy中如何将单行矩阵转为数组?及将(1,3)矩阵转为(3,)向量?

嘿,我来帮你搞定这两个NumPy的小问题,都是矩阵转数组/向量的常见小坑,咱们一个个说~

1. 在NumPy中,如何将单行矩阵转换为数组?

单行矩阵本质还是二维结构(比如形状是(1, n)),如果只是转成数组,直接用np.asarray()或者np.array()就能得到二维数组,但如果你想要一维数组(形状(n,)),可以用这些方法:

  • 用squeeze()去掉长度为1的冗余维度:
    import numpy as np
    m = np.matrix([[1, 2, 3]])
    arr = np.squeeze(m)
    # arr的形状是(3,)
    
  • 用矩阵的A1属性(矩阵对象专属,直接返回扁平化的一维数组):
    arr = m.A1
    
  • 用ravel()或flatten()扁平化:
    arr = np.ravel(m)  # 返回原数据的视图,修改可能影响原矩阵
    # 或者
    arr = m.flatten()  # 返回副本,修改不影响原矩阵
    
2. 将形状(1,3)的矩阵转换为(3,)的真正向量

你提到v = m[0] + m[1]得到的是形状(1,3)的矩阵,用np.asarray(v)和np.array(v)后还是二维数组,这很正常——因为这两个方法只是把矩阵包装成数组,但不会自动降维。要得到一维向量,试试这些方法:

  • 最直观的:用squeeze()
    v = np.matrix([[5, 7, 9]])
    vec = np.squeeze(v)
    print(vec.shape)  # 输出(3,)
    
  • 矩阵专属的A1属性
    vec = v.A1
    print(vec.shape)  # 输出(3,)
    
  • 用reshape(-1)强制降维
    vec = v.reshape(-1)
    # -1让NumPy自动计算维度,这里就会变成(3,)
    
  • 用ravel()扁平化
    vec = np.ravel(v)
    

简单来说,核心就是把二维矩阵里那个多余的长度为1的维度去掉,就能得到你想要的一维向量啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:32