1
我得到了sympy阵列表达式sympy数组numpy的阵列
sympyarray = Matrix([[2/(dx**2*(exp(I*theta) + 1)), -2*exp(-I*theta)/dx**2, 2*exp(-I*theta)/(dx**2*(exp(I*theta) + 1))]])
,并希望把它改造成一个numpy的阵列
numpyarray=np.array([2/(dx**2*(np.exp(1j*theta) + 1)), -2*np.exp(-1j*theta)/dx**2, 2*np.exp(-1j*theta)/(dx**2*(np.exp(1j*theta) + 1))])
,不知是否有这样做没有什么好的办法?
我的方法到现在为止一直是以下几点:
- 转换复杂的sympyarray “我” 到 “1J” 使用sympy.subs
使用转换sympy阵列到阵列numpy的
numpyarray = sympyarray.tolist()
- 插入“np”。因为.tolist()不会将sympy指数变为numpy指数,所以在打印的numpyarray中的所有exp(1j * theta)之前。
它肯定是一个更简单的方法?
注意:就我的知识而言,lambdify并不是这里的答案。在阅读文档时,lambdify将sympy表达式转换为需要数值输入的函数?还是我离开?
你希望评估'theta'和'dx',将数值'numpy'阵列,或将其作为保持返回一个ndarray的功能? – Benjamin
我将在数组中插入'theta'和'dx'的值,但是我需要它们是动态的,以便能够更改dx和theta值。或者是你的问题的答案? –