如何使用字典来翻译/替换数组的元素?[重复]
问题内容:
这个问题已经在这里有了答案 :
快速替换numpy数组中的值 (10个答案)
4年前关闭。
我有一个numpy数组,其中包含数百个大写字母的元素,没有特定顺序
import numpy as np
abc_array = np.array(['B', 'D', 'A', 'F', 'H', 'I', 'Z', 'J', ...])
此元素中的每个元素numpy.ndarray
都是一个numpy.string_
。
我还有一个“翻译词典”,带有键/值对,以便大写字母对应于一个城市
transdict = {'A': 'Adelaide', 'B': 'Bombay', 'C': 'Cologne',...}
字典中只有26对transdict
,但是numpy数组中有数百个字母我必须翻译。
最有效的方法是什么?
我考虑过使用,numpy.core.defchararray.replace(a, old, new, count=None)[source]
但这会返回ValueError
,因为numpy数组的大小与字典键/值的大小不同。
AttributeError: 'numpy.ndarray' object has no attribute 'translate'
问题答案:
这样可以吗 有时,纯Python是处理此类问题的一种好方法。下面将构建翻译列表(轻松转换回numpy数组)和合并的输出。
import numpy as np
abc_array = np.array(['B', 'D', 'A', 'F', 'H', 'I', 'Z', 'J'])
transdict = {'A': 'Adelaide',
'B': 'Bombay',
'C': 'Cologne',
'D': 'Dresden',
'E': 'Erlangen',
'F': 'Formosa',
'G': 'Gdansk',
'H': 'Hague',
'I': 'Inchon',
'J': 'Jakarta',
'Z': 'Zambia'
}
phoenetic = [transdict[letter] for letter in abc_array]
print ' '.join(phoenetic)
输出是:
Bombay Dresden Adelaide Formosa Hague Inchon Zambia Jakarta