gpt4 book ai didi

python - sympy 表达式数组到 numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:57 25 4
gpt4 key购买 nike

我有一个 sympy 数组

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))])

想知道是否有什么好的方法可以做到这一点?

到目前为止我的方法如下:

  1. 使用 sympy.subs 将 sympyarray 中的复数“I ”转换为“1j”
  2. 使用将 sympy 数组转换为 numpy 数组

    numpyarray = sympyarray.tolist()

  3. 插入“np”。在打印的 numpyarray 中的所有 exp(1j*theta) 之前,因为 .tolist() 不会将 sympy 指数更改为 numpy 指数。

这肯定是一个更简单的方法吗?

注意:据我所知,lambdify 不是这里的答案。当我阅读文档时,lambdaify 将 sympy 表达式转换为需要数字输入的函数?还是我离得远了?

最佳答案

使用lambdify:

In [10]: expr = Matrix([[2/(dx**2*(exp(I*theta) + 1)), -2*exp(-I*theta)/dx**2, 2*exp(-I*theta)/(dx**2*(exp(I*theta) + 1))]])

In [12]: f = lambdify([dx, theta], expr, 'numpy')

In [15]: f(np.array([1], dtype=complex), np.array([np.pi], dtype=complex))
Out[15]:
array([[[ 0. -1.63312394e+16j],
[ 2. +2.44929360e-16j],
[-2. +1.63312394e+16j]]])

关于python - sympy 表达式数组到 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com