通过使用numpy阵列作为时间效率的键来检索Python字典值



我正在使用python 3.6。

array(['0', '1', '2', ..., '3304686', '3304687', '3304688'],
      dtype='<U7')

我有另一个字典B = {1:'012',2:'023',3:'045',..... 3304688:'01288'}

我想检索B的每个值,并通过提供A作为B的键来将其存储在另一个Numpy数组中。我打算以这种方式尝试

    z_array = np.array([])  
    for i in range(a.shape[0]):
        z=b[i]        
        z_array=np.append(z_array,z)

但是看着A的形状,我觉得这会很耗时。您能建议我一些替代方法,这将是有效的吗?

您可以使用np.frompyfunc,请注意,这将创建一个对象数组。

b = {str(i): i**3 for i in range(10**7)}
a = [str(i) for i in range(10**7)]
c = np.frompyfunc(b.__getitem__, 1, 1)(a)

c = np.frompyfunc(b.get, 1, 1)(a)

指示None的丢失键。

在示例中,有10,000,000个项目,而许多查找仅需一两秒钟。(创建ab需要更长的时间)

最新更新