python - 无法获取从 fun.eval 获得的数组的实部部分

标签 python arrays list complex-numbers

我使用 eval 函数来评估函数。代码如下:

import numpy as np
import sympy
from sympy import Symbol, Add
s = sympy.Symbol('s')
x = [ s, s+1, 10*s**2, 5]
a = [1 + 1j, 2 , 3 , 4 , 5]
fun = Add(*x) # Create a function by adding all terms. * is to unpack all the values

def F(fun, v):
    return fun.evalf(subs={s: v}) # Evaluate the function at s=v

f_dis = [F(fun, v) for v in a] 
print (f_dis)
fit3 = np.asanyarray(f_dis)
print ("fit3 =", fit3)
realpart = fit3.real[0]
print ("real =", realpart)


f_dis的结果是

[8.0 + 22.0*I, 50.0000000000000, 102.000000000000, 174.000000000000, 266.000000000000]

这里的要点是,代码将 8.0 + 22.0*I 显示为第一个元素的实部,而不是仅显示 8。 我应该怎么做才能解决这个问题? 谢谢。

最佳答案

您可以使用reSympy 获取计算表达式的实部

import numpy as np
from sympy import Symbol, Add, re

s = Symbol('s')
x = [ s, s+1, 10*s**2, 5]
a = [1 + 1j, 2 , 3 , 4 , 5]
fun = Add(*x) # Create a function by adding all terms. * is to unpack all the values

def F(fun, v):
    return fun.evalf(subs={s: v}) # Evaluate the function at s=v

f_dis = [re(F(fun, v)) for v in a] # <---- Use re() here
print (f_dis)
# [8.00000000000000, 50.0000000000000, 102.000000000000, 174.000000000000, 266.000000000000]

关于python - 无法获取从 fun.eval 获得的数组的实部部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56331177/

相关文章:

javascript - 如何在javascript中访问json中的嵌套数组

python - 循环元组并获取从高到低的转换列表的更有效方法

c# - 在 C# 中比较列表的更好方法

python - 比较命名元组列表中的多个(但不是全部)元素

python - 通过 C-api 分析 Python(如何?)

python - 在PyTest中如何配置CaptureManager插件错误 'CaptureManager'对象没有属性 'suspendcapture'

python - Python 中的定点迭代

javascript - 如何拆分从 `div` 元素检索到的文本

java - 如何在 Java 中搜索坐标数组?

javascript - 如何在Retrofit中插入值?