求助: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
相关产品推荐
相关产品推荐

