【问题标题】:Convert from sympy.core.add.Add to numpy complex number从 sympy.core.add.Add 转换为 numpy 复数
【发布时间】:2017-01-09 10:26:04
【问题描述】:

我有来自 Sympy 求解器的解决方案列表:

In [49]: sol
Out[49]: 
[-1.20258344291917 - 0.e-23*I,
 -0.835217129314554 + 0.e-23*I,
 0.497800572233726 - 0.e-21*I]

In [50]: type(sol)
Out[50]: list

In [51]: type(sol[0])
Out[51]: sympy.core.add.Add

如何将此列表转换为带有正常复数值单元格的 numpy 对象?

【问题讨论】:

    标签: python numpy sympy


    【解决方案1】:

    您可以在每个元素上调用内置函数complex,然后将结果传递给np.array()

    例如,

    In [22]: z
    Out[22]: [1 + 3.5*I, 2 + 3*I, 4 - 5*I]
    
    In [23]: type(z)
    Out[23]: list
    
    In [24]: [type(item) for item in z]
    Out[24]: [sympy.core.add.Add, sympy.core.add.Add, sympy.core.add.Add]
    

    使用列表推导和内置函数complex 创建python 复数值列表:

    In [25]: [complex(item) for item in z]
    Out[25]: [(1+3.5j), (2+3j), (4-5j)]
    

    使用与 numpy.array 的参数相同的表达式来创建一个复杂的 numpy 数组:

    In [26]: import numpy as np
    
    In [27]: np.array([complex(item) for item in z])
    Out[27]: array([ 1.+3.5j,  2.+3.j ,  4.-5.j ])
    

    或者,您可以使用numpy.fromiter

    In [29]: np.fromiter(z, dtype=complex)
    Out[29]: array([ 1.+3.5j,  2.+3.j ,  4.-5.j ])
    

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 2016-11-16
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 2021-03-26
      • 2019-07-25
      相关资源
      最近更新 更多