我有一个同情阵列
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))])
并想知道是否有任何好方法可以做到这一点?
我的方法到现在为止如下:
使用
将sympy数组转换为numpy数组numpyarray = sympyarray.tolist()
这肯定是一种更简单的方法吗?
注意:据我所知,lambdify不是这里的答案。当我阅读文档时,lambdify将一个sympy表达式转换为需要数字输入的函数?或者我离开了?
答案 0 :(得分:1)
使用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]]])