为了账号安全,请及时绑定邮箱和手机立即绑定

快速替换numpy数组中的值

快速替换numpy数组中的值

守候你守候我 2019-10-21 09:16:39
我有一个非常大的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数组确实很大,并且只有一小部分元素(在字典中作为键出现)将被替换为相应的值。最快的方法是什么?
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

实现此目的的另一种更通用的方法是函数向量化:


import numpy as np


data = 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 entry

mp = np.vectorize(mp)


print mp(data)


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 3741 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信