猿问

快速替换numpy数组中的值

我有一个非常大的numpy数组(最多包含一百万个元素),如下所示:


[ 0  1  6  5  1  2  7  6  2  3  8  7  3  4  9  8  5  6 11 10  6  7 12 11  7

  8 13 12  8  9 14 13 10 11 16 15 11 12 17 16 12 13 18 17 13 14 19 18 15 16

 21 20 16 17 22 21 17 18 23 22 18 19 24 23]

以及一个小的字典图,用于替换上述数组中的某些元素


{4: 0, 9: 5, 14: 10, 19: 15, 20: 0, 21: 1, 22: 2, 23: 3, 24: 0}

我想根据上面的地图替换一些元素。numpy数组确实很大,并且只有一小部分元素(在字典中作为键出现)将被替换为相应的值。最快的方法是什么?


MYYA
浏览 1650回答 3
3回答

慕森王

实现此目的的另一种更通用的方法是函数向量化:import numpy as npdata = np.array([0, 1, 6, 5, 1, 2, 7, 6, 2, 3, 8, 7, 3, 4, 9, 8, 5, 6, 11, 10, 6, 7, 12, 11, 7, 8, 13, 12, 8, 9, 14, 13, 10, 11, 16, 15, 11, 12, 17, 16, 12, 13, 18, 17, 13, 14, 19, 18, 15, 16, 21, 20, 16, 17, 22, 21, 17, 18, 23, 22, 18, 19, 24, 23])mapper_dict = {4: 0, 9: 5, 14: 10, 19: 15, 20: 0, 21: 1, 22: 2, 23: 3, 24: 0}def mp(entry):    return mapper_dict[entry] if entry in mapper_dict else entrymp = np.vectorize(mp)print mp(data)
随时随地看视频慕课网APP

相关分类

Python
我要回答