python - 我可以在 Python 3.9 中使用带有浮点值和比较器的 Enum 并且仍然利用 numpy 操作的效率吗?
问题描述
对于 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
例如,如果我要实现 aComparableEnum
来实现必要的比较运算符并简单地比较value
两个 s 的ComparableEnum
s,并且我填充了其中的一个 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)
推荐阅读
- javascript - 滚动替换
- bokeh - 如何使用散景服务器更新 bokeh.plotting.figure.y_axis
- c# - 可以打开上传到blob容器的excel文件吗?
- ruby - 基于 Rails 和 mongoid 中的项目管理用户角色
- json - 如何在 Oracle 18c 中创建手动 JSON?
- ios - Swift 4.2 编译器无法导入使用 Swift 4.0.3 编译的模块
- ios - “致命错误:在使用 JSON 的 Swift 上展开可选值时意外发现 nil”
- angular - 在 stackblitz 中向 Angular 应用程序添加测试用例时出错
- yaml - GitLab CI/CD 通用配置
- node.js - 具有多个字段的 $lookup