首页 > 解决方案 > 如何使用字典在 python 中转换数组?

问题描述

作为一个玩具示例,假设我有:

import numpy as np

np.array([['dog','sheep','sheep','dog','cat'], 
          ['dog','dog','sheep','cat','cat']])
dict = {'dog':5,'cat':1,'sheep':3}

我想找到一种有效的方法来构造我根据字典替换元素的所需数组。

(真正的字典是元素周期表,真正的数组有数千个元素)

标签: pythonpython-3.xnumpy

解决方案


您可以vectorize使用dict的get方法。

>>> import numpy as np
>>> a = np.array([['dog','sheep','sheep','dog','cat'], 
...               ['dog','dog','sheep','cat','cat']])
>>> d = {'dog':5,'cat':1,'sheep':3}
>>> 
>>> np.vectorize(d.get)(a)
array([[5, 3, 3, 5, 1],
       [5, 5, 3, 1, 1]])

我已重命名为dictd因为您不应该dict用自己的变量隐藏内置名称。


推荐阅读