我正在使用Python中的流体动力学模拟工具。传统上(至少在我的领域中),整数索引指的是单元格的中心。一些量存储在细胞之间的面上,并且在文献中用半整数指数表示。但是,在代码中,这些会转换为整数以适合数组。问题是,转变并不总是一致的:你加一半还是减去?如果在代码之间切换足够,则很快就会忘记任何特定代码的约定。老实说,每个代码中都有足够古怪的约定,消除一些代码会有很大的帮助......但如果补救措施比原始问题更糟糕则不行。
我已经考虑过使用单元格中心的偶数索引和面部奇数,但这是违反直觉的。此外,数量在两个面和单元中心都很少存在,因此您永远不会使用一半的指数。你也可以实现函数plus_half(i)和minus_half(i),但这会变得冗长和不雅(至少在我看来)。当然,浮点数比较总是有问题的,以防有人在如何计算1/2时变得可爱。
有没有人建议在Python中实现半整数索引的优雅方式?我确信我不是第一个希望这样做的人,但是我从来没有看到它以一种对用户来说很明显的简单方式完成(不需要用户记住你选择的班次惯例)。
只是为了澄清:我认为可能会有一个重映射步骤隐藏在用户之间以获得整数索引(我打算为我的数据网格包装NumPy数组)。我正在考虑向用户公开的界面,而不是数据的存储方式。
答案 0 :(得分:-1)
你可以使__getitem__
将任意对象作为索引(特别是浮点数)。