为了账号安全,请及时绑定邮箱和手机立即绑定

如何将“dtype = object”NumPy数组转换为“dtype = float”数组?

如何将“dtype = object”NumPy数组转换为“dtype = float”数组?

胡子哥哥 2022-09-06 21:12:32
这个问题是通过使用SymPy来查找简化的行梯队矩阵引起的,我在下面有屏幕截图。通过使用SymPy,我可以得到一个NumPy对象数组,这对我来说非常混乱。首先,我没有看到ref矩阵中的数字被''或'“包裹,为什么它们是'对象'。其次,有没有办法将其转换为“dtype = float”np.array?M = sy.Matrix([[4, 0, 11, 3], [7, 23, -3, 7], [12, 11, 3, -4]]) M_rref = M.rref()M_rref = np.array(M_rref[0])M_rref.astype(float)
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

简短的回答:

M_rref.astype(float)将解决您的问题。

长答案:

为什么会发生这种情况?

为了找出答案,请尝试返回矩阵并尝试以下操作:M

>>> print(M[0])
>>> print(type(M[0]))

您将获得:

4
sympy.core.numbers.Integer

这就是原因。即使它它是4,它实际上是一个存储在SymPy矩阵中的SymPy对象。这就是它应该有的样子:SymPy是用来表示符号数学的。因此,当您将其转换为numpy数组时,NumPy将识别为对象。sympy.core.numbers.Integer

希望这能回答您的问题。


查看完整回答
反对 回复 2022-09-06
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

在此 PR 中,有一个关于将 numpy 矩阵错误地转换为 SymPy 矩阵的说明。使用它(而不是,我认为这是为了将对象的内容转换为浮点数),我会这样做:float

>>> sy.Matrix(M.rows, M.cols, [sympify(x) for x in M_rref]).n()

这应该给你一个SymPy矩阵,其中的条目被评估为浮点数。


查看完整回答
反对 回复 2022-09-06
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信