我可以在 Python 3.9 中使用带有浮点值和比较器的 Enum 并仍然利用 numpy 操作的效率吗?
Can I use an Enum with floating point values and comparators in Python 3.9 and still leverage the efficiency of numpy operations?
对于 Python 3.9 项目,我们想使用 Enums
因为我们按照下面的示例对许多属性进行了装箱。不幸的是,这些 bin 对应于实数并将用于大型公式,因此 IntEnum
可能不是一个很好的选择。
例如:
from enum import Enum
class WaterVapor(Enum):
VERY_DRY = 0.2
DRY = 0.5
MEDIAN = 0.8
WET = 1.0
如果我要实现一个 ComparableEnum
来实现必要的比较运算符并简单地比较两个 ComparableEnum
的 value
,我填充了一个 numpy array
,在这个数组上进行操作时,我是否仍然可以获得 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)
对于 Python 3.9 项目,我们想使用 Enums
因为我们按照下面的示例对许多属性进行了装箱。不幸的是,这些 bin 对应于实数并将用于大型公式,因此 IntEnum
可能不是一个很好的选择。
例如:
from enum import Enum
class WaterVapor(Enum):
VERY_DRY = 0.2
DRY = 0.5
MEDIAN = 0.8
WET = 1.0
如果我要实现一个 ComparableEnum
来实现必要的比较运算符并简单地比较两个 ComparableEnum
的 value
,我填充了一个 numpy array
,在这个数组上进行操作时,我是否仍然可以获得 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)