我有一个非常大的列表,其中包含numpy ndarrays,我需要将字母映射到整数值。
这与我的想法可行有关,但它似乎并不能捕获所有数组。
import numpy as np
x = [np.array(['a','b','c']),np.array(['d','e']),np.array(['a','e'])]
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5}
x[ x == 'a'] = dict_x.get('a')
Output: [1, array(['d', 'e'],
dtype='<U1'), array(['a', 'e'],
dtype='<U1')]
我还试图迭代所有的键,用以下内容逐个替换它们
for i in dict_x.keys():
x[ x == i] = dict_x.get(i)
但这会回来,我认为这是有道理的。任何人都有任何聪明的方法可以立即替换所有这些值并在所有情况下?非常感谢!
[5, array(['d', 'e'],
dtype='<U1'), array(['a', 'e'],
dtype='<U1')]
答案 0 :(得分:1)
你可以试试这个:
x = [np.array(['a','b','c'], dtype="<U4"),np.array(['d','e'], dtype="<U4"),np.array(['a','e'], dtype="<U4")]
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5}
for i in x:
i[ i == 'a'] = dict_x.get('a')
x = array(['1', 'b', 'c'],
dtype='<U1'), array(['d', 'e'],
dtype='<U1'), array(['1', 'e'],
dtype='<U1')]