Python 中的矢量化字典

Pad*_*Key 7 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"]
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

for key, val in my_dict.items():
    b[a == key] = val
Run Code Online (Sandbox Code Playgroud)

虽然布尔掩码在迭代小字典时非常有效,但对于大字典(数千个 key-value-paris)来说很耗时。

jde*_*esa 7

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']
Run Code Online (Sandbox Code Playgroud)

对于高维结构,您可以使用xarray


小智 3

我编写了一个矢量化 python 字典/集,可以有效地存储数据并使用 numpy 数组。支持大多数 numpy 数据类型组合。

您可以在这里找到项目和文档: https: //github.com/atom-moyer/getpy

  • 您可以发布实际答案(而不是网址)吗? (2认同)