【发布时间】:2015-05-23 10:05:01
【问题描述】:
我有两个字典用作稀疏向量:
dict1 = {'a': 1, 'b': 4}
dict2 = {'a': 2, 'c': 2}
我编写了自己的 __add__ 函数来获得这个想要的结果:
dict1 = {'a': 3, 'b': 4, 'c': 2}
重要的是我知道每个对应值的字符串“a”、“b”和“c”。仅仅确保我添加了正确的尺寸是不够的。我还将获得更多以前未知的字符串,其中包含一些我现在刚刚添加到我的字典中的值。
现在我的问题是:那里有更高效的数据结构吗?我查看了 Numpy 的数组和 Scipy 的稀疏矩阵,但据我所知,它们在这里没有任何帮助,或者我只是没有看到解决方案?
我可以将键和值保存在单独的数组中,但我认为我不能只使用任何现有的函数来获得所需的结果。
dict1_keys = np.array([a, b])
dict1_values = np.array([1, 4])
dict2_keys = np.array([a, c])
dict2_values = np.array([2, 2])
# is there anything that will efficiently produce the following?
dict1_keys = np.array([a, b, c])
dict1_values = np.array([3, 4, 2])
【问题讨论】:
-
你真的需要你的键是字符串吗?您是否有已知数量的键或者您想要处理任何可能键的合并/添加?
-
在 scikti-learn 中查看 the stuff。我没有这种事情的经验,但我认为它可以做你想做的事。
-
它必须是字符串。我当然可以将字符串映射到数字,但我认为这不会加快任何速度。是的,稍后会添加更多键
-
稀疏的
dok格式是一个字典,但它的键是一个元组 - 矩阵的 2 个整数索引值。要进行数学运算,它会转换为csr格式。
标签: python performance numpy scipy sparse-matrix