在 Python 中的大型数据集上使用 OOP 是否有益?
Is it beneficial to use OOP on large datasets in Python?
我正在对两种类型的测量实施卡尔曼滤波器。我每秒 (1Hz) 进行一次 GPS 测量,一秒钟 (100Hz) 进行 100 次加速度测量。
所以基本上我有两个巨大的表,它们必须在某个时候融合。我的目标是:我真的很想编写可读和可维护的代码。
我的第一个方法是:两个数据表都有一个 class(所以一个对象是一个数据表),我在 class 方法中进行批量计算(所以几乎所有的我的方法包括一个 for 循环),直到我到达实际的过滤器。我发现这种方法有点太僵硬了。能用,就是数据类型转换太多,不太方便
现在我想更改我的代码。如果我想坚持 OOP,我的第二个尝试是:每个测量值都是 GPS_measurment 或 acceleration_measurement 的对象。这种方法似乎更好,但这样会创建数千个对象。
我的第三次尝试是数据驱动设计,但我不太熟悉这种方法。
我应该使用哪种范式?或者它应该通过上述范例的某种混合来解决?或者我应该只使用 pandas 数据帧来使用过程编程?
听起来您想使用 pandas
。顺便说一句,OOP 是一个概念,而不是您明确编码的东西。一般来说,如果您打算扩展它们或封装某些功能,您只想定义自己的 类。 pandas
和 numpy
是 2 个模块,它们几乎可以满足您对数据的所有要求,并且执行速度更快。
我正在对两种类型的测量实施卡尔曼滤波器。我每秒 (1Hz) 进行一次 GPS 测量,一秒钟 (100Hz) 进行 100 次加速度测量。 所以基本上我有两个巨大的表,它们必须在某个时候融合。我的目标是:我真的很想编写可读和可维护的代码。
我的第一个方法是:两个数据表都有一个 class(所以一个对象是一个数据表),我在 class 方法中进行批量计算(所以几乎所有的我的方法包括一个 for 循环),直到我到达实际的过滤器。我发现这种方法有点太僵硬了。能用,就是数据类型转换太多,不太方便
现在我想更改我的代码。如果我想坚持 OOP,我的第二个尝试是:每个测量值都是 GPS_measurment 或 acceleration_measurement 的对象。这种方法似乎更好,但这样会创建数千个对象。
我的第三次尝试是数据驱动设计,但我不太熟悉这种方法。
我应该使用哪种范式?或者它应该通过上述范例的某种混合来解决?或者我应该只使用 pandas 数据帧来使用过程编程?
听起来您想使用 pandas
。顺便说一句,OOP 是一个概念,而不是您明确编码的东西。一般来说,如果您打算扩展它们或封装某些功能,您只想定义自己的 类。 pandas
和 numpy
是 2 个模块,它们几乎可以满足您对数据的所有要求,并且执行速度更快。