python - Python 中的向量化字典

标签 python numpy

Python 中是否有任何包提供用于使用 NumPy 数组进行矢量化访问的字典?我正在寻找这样的东西:

>>> vector_dict = VectorizedDict({1: "One",
...                               2: "Two",
...                               3: "Three"},
...                               dtype_key=int, dtype_val="U5")
>>> a = np.array([1,2,3]),
>>> b = vector_dict[a]
>>> print(type(b))
np.ndarray
>>> print(b)
["One", "Two", "Three"]

虽然这个结果也可以通过迭代数组元素来实现,但对于大型数组来说,迭代方法效率相当低。

编辑:

对于小词典,我使用以下方法:

for key, val in my_dict.items():
    b[a == key] = val

尽管 bool 掩码在迭代小型字典时非常有效,但对于大型字典(数千个键值巴黎)来说非常耗时。

最佳答案

Pandas数据结构针对 1D ( pd.Series )、2D ( pd.DataFrame ) 和 3D ( pd.Panel ) 数据实现此功能:

import numpy as np
import pandas as pd

s = pd.Series(data=['One', 'Two', 'Three'], index=[1, 2, 3])
a = np.array([1, 2, 3])
b = s[a]
print(b.values)
['One' 'Two' 'Three']

对于高维结构,您有 xarray .

关于python - Python 中的向量化字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49296660/

相关文章:

python - 如何修复运行时错误: deque mutated during iteration in Python

Python - 从一行中的给定点查找前后五个单词的最佳代码

python - numpy中的3维数组

python - 如果我在自己的python软件包中使用了numpy并分发了自己的软件包,那么我应该包括numpy许可证吗?

python - pip 在 Mac OS X Mavericks (10.9) 上引发 stdio.h not found 错误

python - 如何在图中表示非常大和非常小的值

python - Python 中的 PCI 总线接口(interface)

python - Django celery : how to set task to run at specific interval programmatically

python - DataFrame Python 中的数学求值字符串

python - Numpy:一次向量化访问多个列?