现在有一个ndarray
和字典dict
如下:
a1 = np.array(['a', 'b'])
d = {'a':1, 'b':2}
想根据字典d
中的对应关系将a1
映射成如下:
array([1, 2])
第一反应是使用map
函数,不过其中需要注意的是,map
中传入的函数部分需为dict.get
a1 = np.array(['a', 'b'])
d = {'a':1, 'b':2}
a2 = np.array(list(map(d.get, a1)))
a2
>>> array([1, 2])
如上,一行代码就解决了,缺点是只可以用在一维ndarray
上。
对于多维ndarray
,可以使用numpy
的vectorzie
函数。
a1 = np.array([['a', 'b'], ['b', 'a']])
d = {'a':1, 'b':2}
a2 = np.vectorize(d.get)(a1)
a2
>>> array([[1, 2],
[2, 1]])
依旧一行代码解决问题,优雅!