我想在python中建立一个用于科学计算的库。精确用于自然坐标力学。在进入代码之前,我想先想一想。这篇帖子征求任何建议,无论是坏主意还是好主意。我不是python的专业人士,我确信。周围可能有专家。
首先,我希望我的库可以与numpy(数字计算)和casadi(符号计算)一起使用。为了尽可能简单,我希望库是可加载的:
import my_package_numpy # option 1
import my_package_casadi # option 2
其次,我希望每个类或每个函数和方法都能同时使用这两种类型的对象ndarrays(numpy)和MX(casadi)。
my_var_np = np.array([2,2]) # numeric
my var_mx = MX.sym("var",[2,1]) # symbolic
from my_package_numpy import HelloWorld # option 1
hw = HelloWorld(my_var_np)
from my_package_casadi import HelloWorld # option 2
hw = HelloWorld(my_var_mx)
第三,我希望能够切换到知道用户何时在特定方法中使用一个或另一个后端。因为数学运算的定义可能不同。(有全局变量可以知道吗?)
class HelloWorld:
def __init__(value):
self.value = value
if numpy:
self.transpose_value = value.transpose()
elif casadi:
self.transpose_value = transpose(value)
我知道if写得不好,我不知道从哪里得到这个值。
这个图书馆可以快速发展。我想尽量避免复制代码和只写一次的东西。
如有任何帮助、建议或意见,我们将不胜感激。
我正试图构建一个包含两个数学后端的包。我希望它对用户来说尽可能简单。但我不知道如何构建后端