我目前有一个NumPy数组,如下所示:
>>> print(a)
[[ 1. 26.9952 30.6501 10.06952 1.61731]
[ 2. 26.9952 30.6501 10.06952 1.61731]
[ 0. 26.9952 30.6501 10.06952 1.61731]
[ 2. 26.9952 30.6501 10.06952 1.61731]
[ 3. 26.9952 30.6501 10.06952 1.61731]
[ 2. 26.9952 30.6501 10.06952 1.61731]
[ 1. 26.9952 30.6501 10.06952 1.61731]
[ 2. 26.9952 30.6501 10.06952 1.61731]
[ 3. 26.9952 30.6501 10.06952 1.61731]
[ 2. 26.9952 30.6501 10.06952 1.61731]]
我有一本这样的字典:
map_dict = {0.0: 'a', 1.0: 'b', 2.0: 'c', 3.0: 'd'}
我想做的是将NumPy数组a
的第一列中的所有值转换为map_dict
中的相应值。有什么有效的方法可以做到吗?我正在使用的当前方法是通过for循环,并在进行过程中迭代地替换值。
答案 0 :(得分:5)
您可以尝试np.vectorize
:
>>> import numpy as np
>>> a = np.arange(12).reshape(4,3)
>>> a
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> map_dict = {0.0: 'a', 3.0: 'b', 6.0: 'c', 9.0: 'd'}
>>> a = a.astype(object)
>>> a[:,0] = np.vectorize(map_dict.get)(a[:,0])
>>> a
array([['a', 1, 2],
['b', 4, 5],
['c', 7, 8],
['d', 10, 11]], dtype=object)