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

求助:Numpy中矩阵运算结果无法转为一维数组的问题

解决方案

问题出在你使用了np.matrix类型,它和普通np.array的运算行为存在差异:当一维数组a与np.matrix相乘时,结果会被保留为矩阵类型(二维),即便调用flatten()或ravel(),返回的依然是矩阵对象而非普通一维数组。

以下是几种更简洁的解决方法:

方法1:改用普通数组(推荐)

np.matrix已是numpy中被弃用的类型,官方更推荐用普通np.array处理矩阵运算,搭配@运算符(或np.dot())执行矩阵乘法:

import numpy as np

a = np.array([5, 5, 0])
# 用np.array定义旋转矩阵
Rx = np.array([[1, 0, 0],
               [0, 1, 0],
               [0, 0, 1]])
# 使用@进行矩阵乘法,直接得到一维数组
b = a @ Rx

print(b)  # 输出: [5 5 0]

方法2:利用矩阵的.A1属性

如果坚持使用np.matrix,可通过矩阵对象的.A1属性直接提取为一维普通数组:

import numpy as np

a = np.array([5, 5, 0])
Rx = np.matrix([[1, 0, 0],
                [0, 1, 0],
                [0, 0, 1]])
b = (a * Rx).A1

print(b)  # 输出: [5 5 0]

方法3:将矩阵结果转成普通数组后扁平化

把运算得到的矩阵对象转为普通数组,再执行扁平化操作:

import numpy as np

a = np.array([5, 5, 0])
Rx = np.matrix([[1, 0, 0],
                [0, 1, 0],
                [0, 0, 1]])
b = np.array(a * Rx).flatten()

print(b)  # 输出: [5 5 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:10:54