【发布时间】:2012-02-12 17:13:31
【问题描述】:
我想知道是否有一种简单的方法可以创建一个类来处理 numpy 数字数组的整数和关键字索引。
最终目标是拥有一个 numpy 数组,我还可以使用每个变量的名称对其进行索引。 例如,如果我有列表
import numpy as np
a = [0,1,2,3,4]
names = ['name0','name1','name2','name3','name4']
A = np.array(a)
我希望能够通过调用(例如)A['name1'] 轻松获取 A 的值,但让数组保留 numpy 数组的所有功能。
谢谢!
彼得
编辑:
非常感谢您的帮助,我会尽量明确预期用途!我有一组现有的代码,它使用 numpy 数组来存储和应用变量向量。我的向量有大约 30 个条目。
当我想查看特定变量的值时,或者当我想对其中一个变量进行更改时,我必须记住哪个条目对应于哪个变量(条目的顺序或数量不一定会改变一旦创建了数组)。现在我用字典来跟踪。例如,我有一个具有 30 个值的 numpy 数组“VarVector”。 “vmax”是条目 15,值为 0.432。然后我将有一个包含 30 个键 'VarDict' 的并发字典,这样 VarDict[entry] = index.这样我可以通过链接调用找到 vmax 的值
VarVector[VarDict["vmax"]]
这将返回 0.432
我想知道是否有一种简单地组合这两个结构的好方法,这样 VarVector[15](为了兼容性)和 VarVector["vmax"](为了方便我)都会指向同一个数字.
谢谢! 彼得
【问题讨论】:
-
numpy 数组的重点是它们是用 C 语言编写的,因此速度很快。如果你这样做,你将失去 numpy 数组的好处——你还不如使用 Python 列表!
-
你能给出一个为什么你想这样做的理由吗?
-
@katrielalex - 不一定... numpy 数组的
__getitem__已经很慢了。通过将其添加到其中,您不会显着减慢速度。但是,这是一个相当常见的用例,并且已经完成了几次(pandas和larry)。看看这个比较:scipy.org/StatisticalDataStructures 在某些情况下,拥有“标记轴”或“标记项目”是一件好事。 -
很公平,我的立场是正确的。谢谢=)
标签: python arrays dictionary numpy multiple-inheritance