python - 更有效的解决方案?字典作为稀疏向量

标签 python performance numpy scipy sparse-matrix

我有两个用作稀疏向量的字典:

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])

最佳答案

也许pandas就是您要找的:

d1 = pandas.DataFrame(numpy.array([1, 4]), index=['a', 'b'], dtype="int32")
d2 = pandas.DataFrame(numpy.array([2, 2]), index=['a', 'c'], dtype="int32")

d1.add(d2, fill_value=0)

结果:

   0
a  3
b  4
c  2

关于python - 更有效的解决方案?字典作为稀疏向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411388/

相关文章:

python:具有概率的随机样本

Python (+SymPy) : How to get the same result as in Mathematica?

java - 如何使用 Java 8/Streams 在 HashMap 中找到具有某些条件的最大键?

python - 使用 python 用分位数索引替换 numpy 数组中的条目

python - 绘制用 sklearn 制作的回归量的 3d 图

python - tkinter 的时间选择器

C# 性能好奇心

xml - 为什么 PowerShell 工作流比用于 XML 文件分析的非工作流脚本慢得多

python - 计算 numpy 二维数组中的出现次数

python - 如何为在 tensorflow 中处理复杂张量的自定义操作定义梯度?