Python 半整数指数

Python 半整数指数,python,indexing,Python,Indexing,我正在用Python开发流体动力学模拟工具。传统上(至少在我的领域中),整数索引指的是单元格的中心。一些量存储在单元之间的面上,文献中用半整数索引表示。然而,在代码中,这些被转换成整数以适应数组。问题是,这种变化并不总是一致的:你是加一半还是减一半?如果您在代码之间切换的次数足够多,您很快就会忘记任何特定代码的约定。老实说,每段代码中都有足够多的古怪约定,消除一些约定将是一个很大的帮助。。。但如果补救措施比原来的问题更糟糕,就不会 我曾考虑过对细胞中心使用偶数索引,对人脸使用奇数索引,但这是违反

我正在用Python开发流体动力学模拟工具。传统上(至少在我的领域中),整数索引指的是单元格的中心。一些量存储在单元之间的面上,文献中用半整数索引表示。然而,在代码中,这些被转换成整数以适应数组。问题是,这种变化并不总是一致的:你是加一半还是减一半?如果您在代码之间切换的次数足够多,您很快就会忘记任何特定代码的约定。老实说,每段代码中都有足够多的古怪约定,消除一些约定将是一个很大的帮助。。。但如果补救措施比原来的问题更糟糕,就不会

我曾考虑过对细胞中心使用偶数索引,对人脸使用奇数索引,但这是违反直觉的。而且,数量很少同时存在于两个面和单元中心,所以你从不使用一半的索引。您也可以实现函数加半(i)和减半(i),但这会变得冗长和不雅(至少在我看来)。当然,浮点比较总是有问题的,以防有人在计算1/2时变得可爱

有人对在Python中实现半整数索引的优雅方法有什么建议吗?我肯定我不是第一个希望这样做的人,但我从来没有见过这样做的简单方式对用户来说是显而易见的(不需要用户记住您选择的轮班惯例)


我只是想澄清一下:我假设可能有一个重新映射步骤对用户隐藏,以获得整数索引(我打算为我的数据网格包装NumPy数组)。我想到的是向用户公开的界面,而不是数据的存储方式。

您可以制作
\uuu getitem\uuuu
,它将任意对象作为索引(特别是浮点数).

这应该放在评论区。我知道我可以用某种访问函数包装数据数组,以便将用户的输入映射到底层数据结构。我正在寻找一个优雅的用户界面。浮点比较很麻烦,所以我希望避免这样做。您可以使用带有
Decimal
键(`d={Decimal('0.5'):'foo'))的字典,但这在处理数字时可能会有性能问题,而且字典不能保证保留顺序。我宁愿将其封装在一个类中,该类接受浮点数并将它们转换为实际数据结构的整数索引。