【发布时间】:2016-02-05 09:42:12
【问题描述】:
我有一个 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',...}
transdict 字典里只有 26 对,但是我必须翻译的 numpy 数组中有数百个字母。
最有效的方法是什么?
我考虑过使用numpy.core.defchararray.replace(a, old, new, count=None)[source],但这会返回ValueError,因为numpy 数组的大小与字典键/值不同。
AttributeError: 'numpy.ndarray' object has no attribute 'translate'
【问题讨论】:
-
您是否尝试过任何有效的代码,是否效率低下?样本数据的预期输出是什么?
-
@Divakar 实际上,我最好的猜测是使用
numpy.core.defchararray.replace(),但这不起作用。所以是的,我不知道该怎么办。 -
对于
old,你需要使用transdict.keys(),对于new你需要使用transdict.values(),那么.replace(abc_array, old, new)应该可以工作 -
@ChadS。我也是这么想的,但事实并非如此。
abc_array是形状为 (700,1) 的 numpy 数组,old和new是形状为 (26,1) 的 numpy 数组 -
@ChadS。我收到广播错误:
ValueError: shape mismatch: objects cannot be broadcast to a single shape
标签: python arrays numpy dictionary