使用符号表达式数组时,建议使用numpy数组吗?
有点像
u0=numpy.array([Number(1.0), Number(1.0), Number(1.0)])
我是说,使用numpy数组而不是python列表是否更快?
如果是这样,使用numpy数组的某些操作似乎会自动转换为浮点符号表达式,例如:
u0=np.array([Number(1.0), Number(1.0), Number(1.0)])u = np.zeros((10, 3))u[0] = u0
现在
type(u0[0])>>sypy.core.numbers.Float公司,
type(u[0][0])>>numpy.float64公司
如何避免numpy转换复制到float64的符号表达式?

最佳答案

如果需要的话,我认为使用numpy数组是可以的。您应该记住,数组与列表有本质的不同。最重要的是,
所有数组元素必须是同一类型,并且不能更改类型。
特别是,定义数组u0,默认情况下这是一个浮点数数组。
这就是为什么不能为其指定任何sympy对象。
我自己使用numpy数组来容纳sympy表达式。最值得注意的是,在我需要超过2维的情况下,因此不能使用同态矩阵。
如果使用数组而不是列表的唯一原因是速度,那么这可能是不可取的。尤其是,因为您必须对类型(如您所发现的)稍微小心一点,并且在使用list或sympy.Matrix时应该不会有太多意外。
在您的示例中,可以通过定义适当的数据类型来解决此问题:

u = np.zeros((10, 3), dtype=sp.Symbol)

关于python - 使用Sympy数字的numpy数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41039949/

10-10 18:37
查看更多