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)来说很耗时。
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
| 归档时间: |
|
| 查看次数: |
4172 次 |
| 最近记录: |