【发布时间】:2015-07-23 19:19:30
【问题描述】:
我想将numpy的array的功能与python原生的dict结合起来,即创建一个可以用字符串索引的多维数组。
例如,我可以这样做:
dict_2d = {'a': {'x': 1, 'y': 2},
'b': {'x': 3, 'y': 4}}
print dict_2d['a','y'] # returns 2
我知道我可以做到dict_2d['a']['x'],但从长远来看,我希望能够像对待 numpy 数组一样对待它们,包括进行矩阵乘法等,而分层 dicts 则不可能。
编写一个简单版本的类也不难,我只是使用该类将所有字符串转换为 int 索引,然后使用 numpy,但如果可能的话,我想使用已经存在的东西。
编辑:我不需要令人难以置信的表现。我将使用 10x10 数组。我的目标是让编写代码变得简单而健壮。使用 numpy 数组与仅在 Fortran 中编写它并没有太大的不同。我已经花费了足够多的时间来追踪 Fortran 索引错误...
【问题讨论】:
-
您真的需要将数据存储在嵌套结构中吗?你可以只使用一个键是元组的字典。
-
@BrenBarn 可能会使用 大量 内存
-
你想通过不使用 numpy 来实现什么?如果您只想要行/列的字符串标签,请查看pandas,它提供了很好的表格数据类型,可以包装 numpy 数组。
-
@BrenBarn 我根本不想避免 numpy。它似乎并没有自己做字符串标签。 pandas 看起来就像我希望的那样。我会更详细地检查一下
-
@BrenBarn Pandas 正是我想要的。如果你想把它写成答案,我会接受。
标签: python numpy dictionary indexing pandas