我可以在Python 3.9中使用带有浮点值和比较器的Enum,并且仍然利用numpy操作的效率吗?



对于Python 3.9项目,我们希望使用Enums,因为我们在下面的例子中有许多属性。不幸的是,这些箱子对应于实数,将在大型公式中使用,因此IntEnum可能不是一个很好的选择。

例如:

from enum import Enum
class WaterVapor(Enum):
VERY_DRY = 0.2
DRY = 0.5
MEDIAN = 0.8
WET = 1.0

如果我要实现一个ComparableEnum,它实现了必要的比较运算符,并简单地比较了两个ComparableEnumvalues,并填充了其中的一个numpyarray,那么在对这个数组进行操作时,我是否仍然可以获得numpy的性能优势?我的直觉告诉我没有,但我还没有找到一个明确的答案。

如果我的直觉是正确的,任何其他设计建议也将非常感谢。使用浮点数对于我们将要进行的计算是必不可少的,numpy提供的性能增强也是如此。将它们限制为特定的值确实很好,但不能以牺牲其他两个因素为代价。

您需要继承float:

from enum import Enum
class WaterVapor(float, Enum):
VERY_DRY = 0.2
DRY = 0.5
MEDIAN = 0.8
WET = 1.0
print(WaterVapor.VERY_DRY.value)

最新更新