【发布时间】:2022-11-23 13:52:44
【问题描述】:
我在 python 中使用 pandas、numpy、sympy 库。 有没有办法更快地计算下面的语句?
import pandas as pd
import numpy as np
import sympy as sp
df = pd.DataFrame(np.zeros(100 ** 2).reshape(100,100))
x = sp.symbols('x',real = True)
df.loc[99,99] = x
for j in range(99,0,-1):
for k in range(j-1,-1,-1):
df.loc[k,j] = df.loc[k+1,j] ** (1/2) * sp.exp(1.5)
df.loc[j-1,j-1] = df.loc[0,j]
我使用线程、多处理、numba 库来提高速度。 但是总是出现Error。
【问题讨论】:
-
虽然
df开始填充浮点零,但通过插入一个 sympysymbol,您将框架(或至少某些列)的数据类型更改为对象数据类型。现在你已经失去了编译 numpy 方法的所有速度优势。我预计numba也有这方面的问题。我们不建议混合使用 sympy 和 numpy - 除非你知道你在做什么! -
谢谢你。但我应该使用 sympy 符号。因此,如果我将 sympy 和 numpy 混合使用,我将无法提高计算速度。这样对吗?如果你知道另一个 sovle,请教我。
-
有没有办法在 numpy 中使用“x”符号?
-
我不明白你想做什么。
numpy用于数值计算,尤其是大型数组。sympy是象征性的,想想代数。如果不进行一些研究,您将无法有效地使用它们。