【发布时间】:2015-11-15 23:49:31
【问题描述】:
我有以下数组和字典。
>>> data = ['a', 'b', 'a', 'a']
>>> mapping = {'a': 9, 'b': 0}
我想应用一个基于此输入字典将np.array(['a', 'b', 'a', 'a'] 转换为np.array([9, 0, 9, 9]) 的函数。但我希望这个操作被矢量化。不使用for loop,如何实现这种转换?
请注意,np.apply_along_axis 和 np.apply_over_axis 都不起作用,因为它们要求输入数组是二维的。
编辑:请注意,我使用的实际数据集非常大,这里只是一个简单的示例。
【问题讨论】:
-
“非常大”有点含糊。一百万?十亿?远远超过十亿?另外,
mapping大概有多少个键? -
你浏览过 numpy 或 scipy 文档看是否有解决方案吗?
-
@WarrenWeckesser:只是一个足够大的数据集,几乎无法放入我的 RAM。 (我正在为退化的情况做准备,我需要为十亿行的数据集做准备。)
-
@wwii:是的。否则,我不会知道
np.apply_along_axis和np.apply_over_axis的功能。
标签: python arrays numpy dictionary